#P16316. [ICPC 2023 Jinan R] 奇怪的排序
[ICPC 2023 Jinan R] 奇怪的排序
题目描述
:::epigraph[Stanley P. Y. Fung. Is this the simplest (and most surprising) sorting algorithm ever? arXiv:2110.01111] 我们给出了一个极其简单的排序算法。它看上去显然是错的,但我们证明了它事实上是对的。 :::
在学习了 2021 国际大学生程序设计竞赛亚洲区域赛南京站的《Paimon Sorting》一题中奇怪的排序算法后,小青鱼想到了如下的一个问题。
给定序列 表示一个 的排列,您需要将该排列按升序排序,为此可以执行以下操作至多 次:选择两个下标 和 满足 以及 ,将 按升序进行排序。
请回忆:一个 的排列是一个长度为 的序列,每个从 到 (含两端)的整数在其中都恰好出现一次。另外, 表示小于等于 的最大的整数。
输入格式
有多组测试数据。第一行输入一个整数 表示测试数据组数,对于每组测试数据:
第一行输入一个整数 ()表示排列的长度。
第二行输入 个不同的整数 ()表示给定的排列。
保证所有数据 之和不超过 。
输出格式
对于每组数据,首先输出一行一个整数 ()表示您执行的操作次数。接下来输出 行,其中第 行输出两个由单个空格分隔的整数 和 ,表示您为第 次操作选择的两个下标。
可以证明答案总是存在。如果有多种合法答案,您可以输出任意一种。
3
6
2 3 4 6 5 1
5
1 2 3 4 5
3
2 3 1
2
3 6
1 3
0
1
1 3
提示
对于第一组样例数据,在第 次操作后排列变为 ,在第 次操作后排列变为 ,此时排列是升序的。