#ARC121C. 奇偶排序
奇偶排序
奇偶排序
时间限制:2s
空间限制:512MB
题目描述
给定一个 到 的排列 。你需要在不超过 次操作内将它排成升序。
第奇数次操作可以选择一个奇数 ,交换 与 ;第偶数次操作可以选择一个偶数 ,交换 与 。每组数据的操作编号都从 重新开始计算。在本题限制下总能完成目标。
有 组测试数据,请分别构造一种合法操作序列。
输入格式
第一行一个整数 。
每组数据先给出一个整数 ,下一行给出排列 。
输出格式
对每组数据,先输出操作次数 ,然后输出 个整数 。其中 表示第 次操作交换当前位置 与 的元素。
输出必须满足 、,并且 与 的奇偶性相同。执行全部操作后,排列必须升序。若 ,操作序列可以省略。
样例输入 1
2
5
2 1 3 5 4
2
1 2
样例输出 1
2
1 4
0
样例说明
第一组数据先交换位置 ,再交换位置 ,恰好分别满足奇数次选奇数位置、偶数次选偶数位置。第二组数据已经有序,不需要操作。
数据范围
- ;
- ;
- 是 的一个排列;
- 单个输入文件中所有 之和不超过 。
| 子任务编号 | 分值 | 特殊限制 |
|---|---|---|
| 1 | 20 | 每组数据均有 |
| 2 | 排列仅由若干互不相交的相邻逆序对构成,按位置从左到右看,这些逆序对左端点的奇偶性从奇数开始交替 | |
| 3 | 每组数据均有 | |
| 4 | 40 | 无特殊限制 |