atcoder#AGC058A. [AGC058A] Make it Zigzag

[AGC058A] Make it Zigzag

配点 : 400400

問題文

(1,2,,2N)(1,2,\cdots,2N) の順列 P=(P1,P2,,P2N)P=(P_1,P_2,\cdots,P_{2N}) が与えられます.

あなたは,以下の操作を 00 回以上 NN 回以下行うことができます.

  • 整数 xx (1x2N11 \leq x \leq 2N-1) を選ぶ. PxP_xPx+1P_{x+1} の値を入れ替える.

操作後の PP が以下の条件を満たすような操作列を 11 つ示してください.

  • i=1,3,5,,2N1i=1,3,5,\cdots,2N-1 について,$P_i である.
  • i=2,4,6,,2N2i=2,4,6,\cdots,2N-2 について,Pi>Pi+1P_i>P_{i+1} である.

なお,条件を満たすような操作列が必ず存在することが証明できます.

制約

  • 1N1051 \leq N \leq 10^5
  • (P1,P2,,P2N)(P_1,P_2,\cdots,P_{2N})(1,2,,2N)(1,2,\cdots,{2N}) の順列
  • 入力される値はすべて整数である

入力

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

NN

P1P_1 P2P_2 \cdots P2NP_{2N}

出力

以下の形式で操作列を出力せよ.

KK

x1x_1 x2x_2 \cdots xKx_K

ここで,KK は行う操作の回数 (0KN0 \leq K \leq N) であり,xix_i (1xi2N11 \leq x_i \leq 2N-1) は ii 回目の操作で選ぶ xx の値である. 条件を満たす解が複数存在する場合,どれを出力しても正解とみなされる.

2
4 3 2 1
2
1 3

操作後は P=(3,4,1,2)P=(3,4,1,2) となり,条件を満たします.

1
1 2
0