题目描述
译自 ROI 2018 Day2 T2. Быстрая сортировка (Quick sort)
给一个包含 n 个元素的排列 [a1, a2, …, an]。
定义操作 S(l, r), 表示:将数列的片段 [al, al+1, …, ar] 重排成 [al+1, al+3, …, al, al+2, …]。
举个例子:$[2, 4, 1, 5, 3, 6, 7, 8]\xrightarrow{\,S(2,6)\,} [2, 1, 3, 4, 5, 6, 7, 8],$ 其中子串 [4,1,5,3,6] 被重排成了 [1,3,4,5,6]。
给定一个排列,试求经过多少次操作能使排列变成递增顺序,并输出任意一组方案,不要求方案的操作次数最少,但要求操作次数 ⩽15000。
输入格式
第一行一个整数 n (1⩽n⩽3000),表示排列 a 的大小。
接下来有 n 个不同的数 a1, a2, …, an,表示排列 a。
输出格式
第一行一个整数 k,表示你的操作次数。 需要满足 0⩽k⩽15000。
接下来 k 行,你需要按照操作顺序描述你的操作。对于每一步操作,输出两个数 L, R,表示你对片段 aL, aL+1, …, aR 执行了一次操作。 需满足 1⩽L⩽R⩽n。
注意,你不需要最小化。你只需保证 0⩽k⩽15000 即可。保证存在这样的 k。
5
3 1 4 2 5
1
1 5
8
2 4 1 5 3 6 7 8
2
2 6
1 2
2
2 1
3
1 1
2 2
1 2
数据范围与提示
设 k0 表示最小操作次数。
对于所有数据,1⩽n⩽3000, 0⩽k0⩽15000, 1⩽ai⩽n, 且 ai 互不相同。
子任务编号 |
分值 |
1⩽n⩽ |
其它 |
1 |
20 |
100 |
k0=1 |
2 |
30 |
100 |
|
3 |
30 |
1000 |
|
4 |
20 |
3000 |
|