QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 256 MB Total points: 100

#12586. 起重机

Statistics

有 $n$ 个板条箱等待装船。板条箱编号为 $1, 2, \dots, n$,这些数字决定了装载顺序。不幸的是,运输过程中出现了混乱,板条箱目前以任意顺序排成一行。由于码头区域空间有限,你必须通过交换其中的一些板条箱来对它们进行排序。

你拥有一台起重机,其工作方式如下:你选择一个长度为偶数的连续板条箱区间,起重机会将该区间的前半部分与后半部分进行交换。两个半部分内部的顺序保持不变。请确定能够将板条箱正确排序的起重机移动序列。

起重机的软件有一个缺陷:移动计数器是一个 9 进制(而不是你可能认为的 10 进制)整数,最多有 6 位。因此,起重机在 $9^6 = 531441$ 次移动后会停止工作(并需要维修)。你的解决方案必须符合此限制。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是各测试用例的描述:

每个测试用例以一个整数 $n$ 开始,$1 \le n \le 10\,000$,表示板条箱的数量。下一行包含一个数字 $\{1, 2, \dots, n\}$ 的排列。

输出格式

对于每个测试用例,输出一行包含 $m$(交换次数),随后是 $m$ 行,按执行顺序描述这些交换。单次交换由两个数字描述,即要交换区间的第一个和最后一个元素的索引。不要遵循起重机奇怪的软件设计——请使用标准的十进制数字系统。

样例

样例输入 1

2
6
5 4 6 3 2 1
5
1 2 3 4 5

样例输出 1

5
1 2
4 5
5 6
4 5
1 6
0

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.