AT_arc110_c [ARC110C] Exoswap
题目描述
有一个由 $1, 2, \ldots, N$ 组成的排列数列 $P = P_1, P_2, \ldots, P_N$。
你需要对 $P$ 进行以下 $N-1$ 种操作,每种操作**恰好各进行一次**,顺序可以任意。
- 交换 $P_1$ 和 $P_2$
- 交换 $P_2$ 和 $P_3$
$\vdots$
- 交换 $P_{N-1}$ 和 $P_N$
请通过合理安排操作顺序,将 $P$ 排成升序。如果无法做到,请输出 $-1$。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $P_1$ $P_2$ $\ldots$ $P_N$
输出格式
如果无论如何都无法将 $P$ 排成升序,请输出 $-1$。
如果可以将 $P$ 排成升序,请输出一种操作顺序,共 $N-1$ 行。第 $i$ 行输出 $j$,表示第 $i$ 次操作是交换 $P_j$ 和 $P_{j+1}$。
如果存在多种可行的操作顺序,输出任意一种均可。
说明/提示
## 限制条件
- 输入均为整数
- $2 \leq N \leq 2 \times 10^5$
- $P$ 是 $1, 2, \ldots, N$ 的一个排列
## 样例解释 1
以下操作顺序可以将 $P$ 排成升序:
- 首先交换 $P_4$ 和 $P_5$,此时 $P$ 变为 $2, 4, 1, 3, 5$
- 接着交换 $P_2$ 和 $P_3$,此时 $P$ 变为 $2, 1, 4, 3, 5$
- 然后交换 $P_3$ 和 $P_4$,此时 $P$ 变为 $2, 1, 3, 4, 5$
- 最后交换 $P_1$ 和 $P_2$,此时 $P$ 变为 $1, 2, 3, 4, 5$
由 ChatGPT 4.1 翻译