题目背景
简化题意:Link。
为什么做完这题你不去做做这题呢
题目描述
你需要在一台奇怪的电脑上排序一个 1∼n 的排列。
你可以选择一个数 x,然后你每次可以翻转一段长为 x+1 或一段长为 x−1 的序列。
请在 20×n 次内还原成 1∼n 的序列。
(出题人注:现在最优可以达到15000次以下,请尝试优化您的算法)
输入格式
输入共 2 行:
第一行一个数 n。
第二行 n 个数,表示序列 a。
输出格式
输出共 m+2 行。
前两行每行 1 个数,分别是 x,m。m 表示操作次数。
接下来 m 行,每行两个数,表示翻转区间的左、右端点。
本题采用 SPJ,只要翻转操作正确即可给分。
提示
-
样例 1 解释:
翻转 (1,2) 序列变成 1,2;
-
样例 2 解释:
翻转 (1,5) 序列变成 1,4,3,2,5;
翻转 (2,4) 序列变成 1,2,3,4,5;
本题采用 Subtask 捆绑测试。
Subtask 编号 |
数据规模与约定 |
Subtask #0 (1 pts) |
n=1 |
Subtask #1 (2 pts) |
n=2 |
Subtask #2 (3 pts) |
n=3 |
Subtask #3 (4 pts) |
n=4 |
Subtask #4 (20 pts) |
1≤n≤50 |
Subtask #5 (20 pts) |
1≤n≤100 |
Subtask #6 (50 pts) |
1≤n≤103 |
对于 100% 的数据,1≤n,ai≤103,数据保证 a 是一个 1∼n 的排列。