Sorting by Subsequences

题意翻译

## 题目描述 给你一个由不同整数组成的序列$a_{1},a_{2},...,a_{n}$ 。要求将这个序列分成最多的子序列,使这些子序列按升序排序后,总体序列也成为一个升序序列。 在对子序列进行排序的过程中,只是对子序列中的元素进行升序排序,不在子序列中的元素不会改变它们的位置。 序列中的每个元素都只能且必须在所有子序列中出现一次。(译者:子序列不重合) ## 输入输出格式 ### 输入格式 第一行包括一个整数N表示序列的长度$n(1<=n<=10^5)$ 。 第二行包括$n$ 个不同的整数$a_{i}(-10^9<=a_{i}<=10^9)$ ,保证所有元素不同。 ### 输出格式 第一行输出整数$k$ ,表示可以分成最多的子序列数量。 接下来$k$ 行,每行包括:该子串元素个数$c_{i}$ ,和$c_{i}$ 个整数$l_{1},l_{2},...,l_{c_{i}}$ 表示子串元素。 可以以任何顺序输出所有子串,但要保证原序列中所有元素都只出现过一次。 如果有多种解法,则输出任意一种。 感谢@二元长天笑 提供的翻译

题目描述

You are given a sequence $ a_{1},a_{2},...,a_{n} $ consisting of different integers. It is required to split this sequence into the maximum number of subsequences such that after sorting integers in each of them in increasing order, the total sequence also will be sorted in increasing order. Sorting integers in a subsequence is a process such that the numbers included in a subsequence are ordered in increasing order, and the numbers which are not included in a subsequence don't change their places. Every element of the sequence must appear in exactly one subsequence.

输入输出格式

输入格式


The first line of input data contains integer $ n $ ( $ 1<=n<=10^{5} $ ) — the length of the sequence. The second line of input data contains $ n $ different integers $ a_{1},a_{2},...,a_{n} $ ( $ -10^{9}<=a_{i}<=10^{9} $ ) — the elements of the sequence. It is guaranteed that all elements of the sequence are distinct.

输出格式


In the first line print the maximum number of subsequences $ k $ , which the original sequence can be split into while fulfilling the requirements. In the next $ k $ lines print the description of subsequences in the following format: the number of elements in subsequence $ c_{i} $ ( $ 0<c_{i}<=n $ ), then $ c_{i} $ integers $ l_{1},l_{2},...,l_{ci} $ ( $ 1<=l_{j}<=n $ ) — indices of these elements in the original sequence. Indices could be printed in any order. Every index from $ 1 $ to $ n $ must appear in output exactly once. If there are several possible answers, print any of them.

输入输出样例

输入样例 #1

6
3 2 1 6 5 4

输出样例 #1

4
2 1 3
1 2
2 4 6
1 5

输入样例 #2

6
83 -75 -49 11 37 62

输出样例 #2

1
6 1 2 3 4 5 6

说明

In the first sample output: After sorting the first subsequence we will get sequence $ 1 2 3 6 5 4 $ . Sorting the second subsequence changes nothing. After sorting the third subsequence we will get sequence $ 1 2 3 4 5 6 $ . Sorting the last subsequence changes nothing.