P14972 『GTOI - 2C』Fliping
题目描述
给出一个 $1\sim n$ 的排列 $a$,请问能否通过**不超过 $3000$ 次操作**使数组 $a$ **单调递增**。
> 对于每次操作,你可以翻转一个长度**至少**为 $\bm3$ 的区间。
>
> 其中,“翻转”指的是:例如数组 $a = \{5,4,3,2,1\}$ ,翻转区间是 $[2,4]$ 的话,结果是 $a = \{5,2,3,4,1\}$。
如果可以,输出一种构造方案,具体请参考 **【输出格式】**。
如果不可以,输出 `-1`。
输入格式
输入共两行。
第一行,一个正整数 $n$。
第二行,一个 $1\sim n$ 的排列 $a$。
输出格式
如果存在构造方案:
- 输出一个正整数 $m$ 表示总共需要操作的次数。
- 然后输出 $m$ 行,每行两个正整数 $l,r$ 表示每次翻转的区间 $[l,r]$。
本题使用 Special Judge ,若有多组构造方案,任意输出一组即可。
如果不存在构造方案,输出 `-1` 即可。
说明/提示
**【数据范围】**
**本题采用捆绑测试。**
对于 $100\%$ 的数据,保证 $1\leq n\leq 2000$,$\{a\}$ 为 $1\sim n$ 的排列。
| $\text{Subtask}$ | $n \leq$ | 特殊性质 | 分数 |
| :----------: | :----------: | :----------: | :----------: |
| $1$ | $7$ | 无 | $20$ |
| $2$ | $50$ | ^ | $10$ |
| $3$ | $1000$ | ^ | $10$ |
| $4$ | $1500$ | ^ | $10$ |
| $5$ | $2000$ | 保证 $a_i$ 随机生成 | $10$ |
| $6$ | ^ | 保证 $a_i\equiv i\pmod 2$ | $20$ |
| $7$ | ^ | 无 | $20$ |