P15109 Adverse Present
题目描述
给你一个长度为 $n$ 的排列,和一个整数 $tp\in\{0,1\}$。
定义一次操作如下:
选择一个子序列从原序列删除,并按原来顺序添加到排列最后。
请输出将这个排列**从小到大排序**所需要的最小操作次数 $k$ 并构造,特别地,如果 $k\cdot n\geq 3\times 10^6$ 或者 $tp=0$,你不需要构造(请参考输入输出格式)。
排列的定义:一个长度为 $n$ 的排列是一个由 $1\sim n$ 的正整数组成的序列,满足其中每个数都出现了恰好一次。
子序列的定义:我们称序列 $b$ 是序列 $a$ 的子序列,当且仅当可以通过删除 $a$ 中的若干个元素得到 $b$。
输入格式
第一行两个整数 $n,tp$,代表排列长度,以及你是否需要构造方案。
第二行 $n$ 个数,第 $i$ 个数为排列中第 $i$ 个元素 $a_i$,保证这些数互不相同。
输出格式
第一行一个数 $k$,代表所需最小次数。
若 $k\cdot n\geq 3\times 10^6$ 或者 $tp=0$,在第二行输出 `-1` 并退出。
否则接下来 $k$ 行,每行第一个数 $c$ 代表此次操作所选择的子序列长度。然后输出 $c$ 个互不相同的数,代表此次操作选择的子序列由当前序列哪些下标的元素组成,这些数顺序随意。
说明/提示
**本题采用捆绑测试。**
$\texttt{Subtask 1(1pts)}:$ $a_i=i$。
$\texttt{Subtask 2(19pts):}$ $a_i=n-i+1$。
$\texttt{Subtask 3(15pts):}$ $n\le 5$。
$\texttt{Subtask 4(20pts):}$ $n\le 2\times 10^3$。
$\texttt{Subtask 5(15pts):}$ $tp=0$。
$\texttt{Subtask 6(30pts):}$ 无特殊限制。
对于所有数据,$1\leq n \leq 10^5$,保证 $a$ 是一个排列。