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$ |