题目描述
(1,2,…,N) の順列 P=(P1,P2,…,PN) が与えられます。あなたは以下の 2 種類のどちらかの操作を行うことを繰り返すことで P を昇順に並び替えたいです。
- 操作 A:1 ≤ i ≤ N−1 を満たす整数 i を選び、Pi と Pi+1 を入れ替える
- 操作 B:1 ≤ i ≤ N−2 を満たす整数 i を選び、Pi と Pi+2 を入れ替える
操作 A の回数が最小となり、かつ操作回数の合計が 105 回以下であるような操作の手順を 1 つ示してください。
なお、この問題の制約のもとで、条件を満たす解が存在することが証明できます。
输入格式
入力は以下の形式で標準入力から与えられる。
N P1 P2 … PN
输出格式
操作回数の合計を S(0 ≤ S ≤ 105) 回としたとき、S+1 行出力せよ。
1 行目には S を出力せよ。
s+1(1 ≤ s ≤ S) 行目には、
- s 回目の操作が操作 A で、選ぶ整数が i(1 ≤ i ≤ N−1) の場合、
A i
を
- s 回目の操作が操作 B で、選ぶ整数が i(1 ≤ i ≤ N−2) の場合、
B i
を
出力せよ。
複数の解がある場合は、どれを答えてもよい。
题目大意
题目描述
现有一个1到N的排列P=(P1,P2,…,PN) 。你可以重复执行以下两种操作来使P从小到大排序。
- 操作A:选择一个整数i满足1 ≤ i ≤ N−1,然后交换Pi和Pi+1。
- 操作B:选择一个整数i满足1 ≤ i ≤ N−2,然后交换Pi和Pi+2。
请找出一个满足以下要求的操作序列
- 操作A的数量最少
- 操作的总数不超过105
在题目条件的约束下,我们可以证明合法的解总是存在的
输入格式
标准输入格式如下
N
P1 P2 … PN
输出格式
设你的答案中的操作次数为S。输出有S+1行。
第一行包含整数S
第(s+1)(1≤s≤S)行中应包含以下内容。
- 如果第s个操作为A,输出
A i
,i为此次操作选择的整数
- 如果第s个操作为B,输出
B i
,i为此次操作选择的整数
如果有多个合法解,输出一个即可。
样例 #1
样例输入 #1
4
3 2 4 1
样例输出 #1
4
A 3
B 1
B 2
B 2
样例 #2
样例输入 #2
3
1 2 3
样例输出 #2
0
样例 #3
样例输入 #3
6
2 1 4 3 6 5
样例输出 #3
3
A 1
A 3
A 5
提示
- 2 ≤ N ≤ 400
- 1 ≤ Pi ≤ N (1 ≤ i ≤ N)
- Pi = Pj (1 ≤ i < j ≤ N)
- 输入均为正数
4
3 2 4 1
4
A 3
B 1
B 2
B 2
3
1 2 3
0
6
2 1 4 3 6 5
3
A 1
A 3
A 5
提示
制約
- 2 ≤ N ≤ 400
- 1 ≤ Pi ≤ N (1 ≤ i ≤ N)
- Pi = Pj (1 ≤ i < j ≤ N)
- 入力はすべて整数
Sample Explanation 1
この出力例では、P は $ (3,2,4,1)\ \rightarrow\ (3,2,1,4)\ \rightarrow\ (1,2,3,4)\ \rightarrow\ (1,4,3,2)\ \rightarrow\ (1,2,3,4) $ の順に変わります。 操作回数の合計は最小でなくてもよいということに注意してください。