[WFOI - 02] I wanna moqueve(位移序列)
题目背景
> It's my fiesta.
>
> 一场前,kid 在 WFOIR1 的地图上,折戟沉沙;一场后,kid 从倒下的地方爬起。
>
> kid 成功了,他不再是从前那个他了。
简化题意:[$\texttt{Link}$](https://www.luogu.com.cn/paste/dlxx9pm0)
为什么做完这题你不去做做[这题](https://www.luogu.com.cn/problem/P7999)呢
题目描述
kid 需要在一台奇怪的电脑上排序一个 $1\sim n$ 的排列,下一个存档点才会出现。
kid 可以选择一个数 $x$,然后接下来的每次操作,kid 可以向左或向右循环位移一段长为 $x$ 的序列(最左/右边的会平移至最右/左边)(位移量是 $1$)。
如果 kid 的操作次数超过了 $23\times n$,排列就会爆炸,kid 将会再次倒下。所以,请告诉 kid 一种还原序列的方案,剩下的操作就交给 €€£ 吧!
输入输出格式
输入格式
输入共 $2$ 行:
第一行一个整数 $n$,表示序列长度。
第二行 $n$ 个整数,表示序列 $a$。
输出格式
输出共 $m + 2$ 行。
前两行每行 $1$ 个数,分别是 $x,m$。$m$ 表示操作次数。
接下来 $m$ 行,每行两个数,前一个数表示平移区间左端点,后一个数表示方向,$0$ 为向左,$1$ 为向右;
本题采用 $\text{SPJ}$,只要循环位移操作正确即可给分。
输入输出样例
输入样例 #1
3
2 3 1
输出样例 #1
2
2
2 0
1 0
输入样例 #2
5
4 2 3 5 1
输出样例 #2
3
3
3 1
1 1
2 0
说明
- **样例 $1$ 解释:**
左移 $(2,3)$ 序列变成 $2,1,3$;
左移 $(1,2)$ 序列变成 $1,2,3$;
- **样例 $2$ 解释:**
右移 $(3,5)$ 序列变成 $4,2,1,3,5$;
右移 $(1,3)$ 序列变成 $1,4,2,3,5$;
左移 $(2,4)$ 序列变成 $1,2,3,4,5$;
**本题采用 Subtask 捆绑测试。**
Subtask 编号 | 数据规模与约定
:-: | :-:
**Subtask #0** ($\texttt{1 pts}$) | $n=1$
**Subtask #1** ($\texttt{2 pts}$) | $n=2$
**Subtask #2** ($\texttt{3 pts}$) | $n=3$
**Subtask #3** ($\texttt{4 pts}$) | $n=4$
**Subtask #4** ($\texttt{20 pts}$) | $1\le n\le 50$
**Subtask #5** ($\texttt{20 pts}$) | $1\le n\le 100$
**Subtask #6** ($\texttt{50 pts}$) | $1\le n\le 10^3$
对于 $100\%$ 的数据,$1\le n,a_i\le 10^3$,数据保证 $a$ 是一个 $1\sim n$ 的排列。