CSES 1698 - Swap Round Sorting
1.0s 512M給你一個陣列,裡面是數字 \(1,2,\dots,n\) 的一個排列,你的任務是用交換輪把這個陣列排序。在每一輪交換中,你可以選任意多組互不相同的元素配對,並把每一組配對交換。
你的任務是求出最少的輪數,並說明每一輪要怎麼選這些配對。
輸入格式
第一行有一個整數 \(n\):陣列的大小。
第二行有 \(n\) 個整數 \(x_1,x_2,\dots,x_n\):一開始的排列。
輸出格式
先輸出一個整數 \(k\):最少的輪數。
接著對每一輪,輸出交換的組數,以及每一組交換的兩個位置。任何一組合法答案皆可。
範例輸入 1
5
5 2 1 3 4
範例輸出 1
2
2
1 3
4 5
1
3 5
說明:一開始的陣列是 \([5,2,1,3,4]\)。第 \(1\) 輪之後,陣列變成 \([1,2,5,4,3]\)。第 \(2\) 輪之後,陣列變成 \([1,2,3,4,5]\)。
限制
- \(1 \le n \le 2 \cdot 10^5\)
題目來源
題目來自 CSES Problem Set(Antti Laaksonen),授權 CC BY-NC-SA 4.0;本頁為翻譯,以相同授權分享。
登入後即可撰寫程式並提交評測。
登入