#P9291. [ROI 2018] Quick sort

[ROI 2018] Quick sort

题目背景

译自 ROI 2018 Day2 T2. Быстрая сортировка (Quick sort)。

题目描述

给一个包含 nn 个元素的排列 [a1,a2,,an][a_1,a_2,\ldots,a_n]。 定义操作 S(l,r),S(l,r), 表示:将数列的片段 [al,al+1,,ar][a_l,a_{l+1},\ldots,a_r] 重排成 [al+1,al+3,,al,al+2,][a_{l+1},a_{l+3},\ldots,a_l,a_{l+2},\ldots]。 举个例子:$[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][4, 1, 5, 3, 6] 被重排成了 [1,3,4,5,6][1, 3, 4, 5, 6]。 给定一个排列,试求经过多少次操作能使排列变成递增顺序,并输出任意一组方案,要求方案的操作次数最少,但要求操作次数 15000\leq 15000

输入格式

第一行一个数 nn

第二行 nn 个数,表示排列 aa

输出格式

第一行一个整数 kk,表示你的操作次数。 需要满足 0k150000 \leq k \leq 15000。 接下来 kk 行,你需要按照操作顺序描述你的操作。对于每一步操作,输出两个数 LL, RR,表示你对片段 aL,aL+1,,aRa_L,a_{L+1},\ldots, a_R 执行了一次操作。 需满足 1LRn1 \leq L \leq R \le n。 注意,你需要最小化。你只需保证 0k150000 \le k \leq 15000 即可。保证存在这样的 kk

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

提示

此处设 k0k_0 表示最小操作次数。

对于所有数据,1n30001\leq n\leq 30000k0150000\leq k_0\leq 150001ain1\leq a_i\leq n,且 aia_i 互不相同。

子任务编号 nn 特殊性质
11 1n1001 \leq n \leq 100 k0=1k_0 = 1
22
33 1n10001 \leq n \leq 1000
44 1n30001 \leq n \leq 3000