#arc147b. [arc147_b]Swap to Sort
[arc147_b]Swap to Sort
题目描述
给定一个排列 , 是 的一个重排列。
你可以按任意顺序重复执行以下两种操作,以使 按升序排序:
-
操作 :选择一个整数 ,使得 ,并交换 和 。
-
操作 :选择一个整数 ,使得 ,并交换 和 。
求一个满足以下条件的操作序列:
-
操作 的次数是最小可能值。
-
总操作次数不超过 。
在此问题的约束下,我们可以证明总是存在解。
约束条件
- 输入中的所有值均为整数。
输入
从标准输入读取输入数据,输入格式如下:
输出
设答案中操作的次数为 ,输出 行。
第一行应该包含 。
第 行()应该包含以下内容:
-
如果第 个操作是操作 ,并且在此操作中选择的整数为 ,则输出
A i
。 -
如果第 个操作是操作 ,并且在此操作中选择的整数为 ,则输出
B i
。
如果有多个满足条件的解,你可以输出任何一个。
示例输入1
4
3 2 4 1
示例输出1
4
A 3
B 1
B 2
B 2
在这个示例中, 的变化如下:$(3,2,4,1) \\rightarrow (3,2,1,4) \\rightarrow (1,2,3,4) \\rightarrow (1,4,3,2) \\rightarrow (1,2,3,4)$。
注意你不必使总操作次数最小。
示例输入2
3
1 2 3
示例输出2
0
示例输入3
6
2 1 4 3 6 5
示例输出3
3
A 1
A 3
A 5