atcoder#ARC147B. [ARC147B] Swap to Sort

[ARC147B] Swap to Sort

配点 : 500500

問題文

(1,2,,N)(1,2,\ldots,N) の順列 P=(P1,P2,,PN)P=(P_1,P_2,\ldots,P_N) が与えられます。あなたは以下の 22 種類のどちらかの操作を行うことを繰り返すことで PP を昇順に並び替えたいです。

  • 操作 AA1iN11 \leq i \leq N-1 を満たす整数 ii を選び、PiP_iPi+1P_{i+1} を入れ替える
  • 操作 BB1iN21 \leq i \leq N-2 を満たす整数 ii を選び、PiP_iPi+2P_{i+2} を入れ替える

操作 AA の回数が最小となり、かつ操作回数の合計が 10510^5 回以下であるような操作の手順を 11 つ示してください。

なお、この問題の制約のもとで、条件を満たす解が存在することが証明できます。

制約

  • 2N4002 \leq N \leq 400
  • 1PiN(1iN)1 \leq P_i \leq N \,(1 \leq i \leq N)
  • PiPj(1i<jN)P_i \neq P_j \,(1 \leq i < j \leq N)
  • 入力はすべて整数

入力

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

NN

P1P_1 P2P_2 \ldots PNP_N

出力

操作回数の合計を S(0S105)S\,(0 \leq S \leq 10^5) 回としたとき、S+1S+1 行出力せよ。

11 行目には SS を出力せよ。

s+1(1sS)s+1\,(1 \leq s \leq S) 行目には、

  • ss 回目の操作が操作 AA で、選ぶ整数が i(1iN1)i\,(1 \leq i \leq N-1) の場合、A i
  • ss 回目の操作が操作 BB で、選ぶ整数が i(1iN2)i\,(1 \leq i \leq N-2) の場合、B i

出力せよ。

複数の解がある場合は、どれを答えてもよい。

4
3 2 4 1
4
A 3
B 1
B 2
B 2

この出力例では、PP は $(3,2,4,1) \rightarrow (3,2,1,4) \rightarrow (1,2,3,4) \rightarrow (1,4,3,2) \rightarrow (1,2,3,4)$ の順に変わります。

操作回数の合計は最小でなくてもよいということに注意してください。

3
1 2 3
0
6
2 1 4 3 6 5
3
A 1
A 3
A 5