#P15207. [NWERC 2025] Arcade Crane
[NWERC 2025] Arcade Crane
题目描述
当地游戏厅刚刚安装了一款新游戏,这是对经典抓娃娃机的一种新尝试。 机器内部有 个毛绒玩具排成一排,在这排玩具上方有一个由硬币操作的机械爪。 每投入一枚硬币,爪子可以使用一次,从一排中抓取恰好三个连续的毛绒玩具,然后将它们重新插入到这排中的某个位置。 剩余的毛绒玩具总是可以被推来推去(不改变它们的顺序)以为重新插入腾出空间。 游戏的目标是按可爱度对毛绒玩具进行排序,一旦它们被排序,机器就会打开,实现这一目标的人将赢得所有毛绒玩具。

图 A.1:样例输出 1 的图示。
Uli 非常想赢得这些毛绒玩具,因此他们做了一些研究,发现每个毛绒玩具都有一个从 到 的独特可爱度值。 为了获胜,他们需要将这些毛绒玩具按这些值的递增顺序排序。 在知道了所有可爱度值并拥有大量 枚硬币的情况下,他们应该如何操作机器以确保赢得毛绒玩具?
输入格式
输入包括:
- 一行,一个整数 (),表示毛绒玩具的数量。
- 一行, 个不同的整数 (对于每个 ,),其中 是第 个毛绒玩具的可爱度值。
输出格式
首先,输出一个整数 (),表示操作的数量。 然后输出 对整数 和 (),按顺序描述操作。 机器中毛绒玩具的位置从 到 编号。 在一个由 和 描述的操作中,位置 和 的毛绒玩具被抓取,然后重新插入到序列中,使得它们在操作后处于位置 和 。
可以证明,使用最多 次操作的解总是存在的。 如果有多个有效解,你可以输出其中任意一个。特别是,你不需要最小化操作次数。
5
3 5 2 1 4
3
2 1
3 1
2 3
6
6 5 4 3 2 1
4
1 3
2 4
3 4
1 3
9
9 2 8 5 4 6 7 3 1
5
2 6
5 1
2 7
5 3
1 3
5
1 2 3 4 5
1
2 2
提示
对于样例 #4:注意,允许 (这不会改变序列)。 对于这个测试用例,也允许不使用任何操作,只输出 "0"。