loj#P2818. 「eJOI2018」循环排序
「eJOI2018」循环排序
题目描述
本题译自 eJOI2018 Problem F. Cycle Sort
给定一个长为 的数列 ,你可以多次进行如下操作:
选定 个不同的下标 (其中 ),然后将 移动到下标 处,将 移动到下标 处,……,将 移动到下标 处,将 移动到下标 处。
换言之,你可以按照如下的顺序轮换元素:$i_1 \rightarrow i_2 \rightarrow i_3 \rightarrow \cdots \rightarrow i_{k-1} \rightarrow i_k \rightarrow i_1$。
例如:$n=4, \{a_i\}=\{ 10, 20, 30, 40\}, i_1=2, i_2=3, i_3=4$ ,则操作完成后的 数列变为 。
你的任务是用操作次数最少的方法将整个数列排序成不降的。注意,所有操作中选定下标的个数总和不得超过 。如果不存在这样的方法(无解),输出 。
输入格式
第一行, 个整数, 和 $s\ (1 \le n \le 2 \times 10^5, 0 \le s \le 2 \times 10^5)$ 。
第二行, 个整数 ,表示数列 ,其中 。
输出格式
如果无解,仅输出 。
否则,第一行输出一个整数 (可以为 ,参见样例 3 ),表示最少需要进行的操作次数。
接下来 行描述每次操作。
对于每次操作,先输出一个整数 表示此操作选定的下标数量,然后在下一行中输出 个整数 。
在操作次数 最少的情况下,你可以输出任意一种可行方案。
5 5
3 2 3 1 1
1
5
1 4 2 3 5
4 3
2 1 4 3
-1
2 0
2 2
0
6 9
6 5 4 3 2 1
2
6
1 6 2 5 3 4
3
3 2 1
6 8
6 5 4 3 2 1
3
2
3 4
4
1 6 2 5
2
2 1
数据范围与提示
数据限制
子任务编号 | 分数 | 限制 |
---|---|---|
样例 | ||
且 | ||
中 到 的所有正整数出现且恰好只出现一次, | ||
中 到 的所有正整数出现且恰好只出现一次, | ||
中 到 的所有正整数出现且恰好只出现一次 | ||
无特殊限制 |