atcoder#ARC110C. [ARC110C] Exoswap

[ARC110C] Exoswap

题目描述

1, 2, , N 1,\ 2,\ \ldots,\ N を並び替えた数列 P = P1, P2, , PN P\ =\ P_1,\ P_2,\ \ldots,\ P_N があります。

あなたは P P に対して、以下の N  1 N\ -\ 1 種類の操作を、任意の順番でちょうど 1 1 回ずつ行わなければなりません。

  • P1 P_1 P2 P_2 を入れ替える

  • P2 P_2 P3 P_3 を入れ替える

    \vdots

  • PN  1 P_{N\ -\ 1} PN P_N を入れ替える

操作の順番を適切に決めることで、P P を昇順に並び替えてください。 もしそれが不可能な場合、-1 を出力してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N P1 P_1 P2 P_2 \ldots PN P_N

输出格式

どのような順番で操作しても P P を昇順に並び替えることができない場合、-1 を出力せよ。

P P を昇順に並び替えることができる場合、そのような操作列を N  1 N\ -\ 1 行使って出力せよ。 i   (1  i  N  1) i\ ~\ (1\ \leq\ i\ \leq\ N\ -\ 1) 行目には、i i 回目の操作で Pj P_j Pj + 1 P_{j\ +\ 1} を入れ替えるとして、j j を出力せよ。

P P を昇順に並び替える操作列が複数存在する場合、どれを出力しても構わない。

题目大意

一个长度为 NN 的序列,有 N1N-1 次机会交换相邻两个数,且每两个位置上的数仅有一次机会进行交换,最终用完所有 N1N-1 次交换使这个无序序列变为单调上升序列。如果可以,则按顺序输出每次交换的位置;如果不行,输出 1-1

5
2 4 1 5 3
4
2
3
1
5
5 4 3 2 1
-1

提示

制約

  • 入力は全て整数
  • 2  N  2 × 105 2\ \leq\ N\ \leq\ 2\ \times\ 10^5
  • P P 1, 2, , N 1,\ 2,\ \ldots,\ N を並び替えた数列

Sample Explanation 1

以下のような操作列が P P を昇順に並び替えます。 - まず P4 P_4 P5 P_5 を入れ替える。P P 2, 4, 1, 3, 5 2,\ 4,\ 1,\ 3,\ 5 になる - 次に P2 P_2 P3 P_3 を入れ替える。P P 2, 1, 4, 3, 5 2,\ 1,\ 4,\ 3,\ 5 になる - 次に P3 P_3 P4 P_4 を入れ替える。P P 2, 1, 3, 4, 5 2,\ 1,\ 3,\ 4,\ 5 になる - 次に P1 P_1 P2 P_2 を入れ替える。P P 1, 2, 3, 4, 5 1,\ 2,\ 3,\ 4,\ 5 になる