#abc233f. [abc233_f]Swap and Sort
[abc233_f]Swap and Sort
题目描述
我们有一个排列 ,其中 是 的一个排列。
你可以进行 种操作之一。第 个操作将交换 的第 个元素和第 个元素。
是否可能通过以任意顺序进行最多 次操作,将 排序为升序?
如果可能,请给出一种操作序列。否则,报告不可能。
约束条件
- 是 的一个排列。
- $1 \\leq M \\leq \\min(2\\times 10^5, \\frac{N(N-1)}{2})$
- 如果 ,则 。
- 输入中的所有值都是整数。
输入
从标准输入读入数据,输入的格式如下:
输出
如果可以将 排序为升序,请打印如下内容:
其中, 表示操作的次数, 表示第 个操作为第 种操作。
注意,必须满足 。
如果无法将 排序为升序,请打印 -1
。
示例输入 1
6
5 3 2 4 6 1
4
1 5
5 6
1 2
2 3
示例输出 1
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)$。
示例输入 2
5
3 4 1 2 5
2
1 3
2 5
示例输出 2
-1
无法将 排序为升序。
示例输入 3
4
1 2 3 4
6
1 2
1 3
1 4
2 3
2 4
3 4
示例输出 3
0
可能已经按升序排序。
此外,以下也是一种可接受的输出:
4
5 5 5 5
注意,并不要求最小化操作次数。