#AT2026. F - Swap and Sort
F - Swap and Sort
当前没有测试数据。
F - 交换和排序
给定一个排列,其中是的一个排列。
我们有种操作可供选择。第种操作交换的第个元素和第个元素。
是否可以通过以任意顺序执行最多次操作中的某些操作,将排序为升序?
如果可以,请给出一个这样的操作序列。否则,报告无解。
约束
- 是的一个排列。
- ,当时。
- 所有输入值都是整数。
输入
输入从标准输入给出,格式如下:
输出
如果可以将排序为升序,则输出如下:
$K$
$c_1$ $c_2$ $\ldots$ $c_K$
这里,表示要执行的操作次数, 表示要执行的第个操作是第种操作。
注意,。
如果无法将排序为升序,则输出-1。
示例
6
5 3 2 4 6 1
4
1 5
5 6
1 2
2 3
3
4 2 1
的变化如下:$(5,3,2,4,6,1)\to (5,2,3,4,6,1)\to (5,2,3,4,1,6)\to (1,2,3,4,5,6)$。
5
3 4 1 2 5
2
1 3
2 5
-1
我们无法将排序为升序。
4
1 2 3 4
6
1 2
1 3
1 4
2 3
2 4
3 4
0
可能已经按升序排列。
另外,这里还有另一种正确的输出:
4
5 5 5 5
注意,不要求最小化操作次数。