CF843A Sorting by Subsequences

题目描述

给你一个由不同整数组成的序列$a_{1},a_{2},...,a_{n}$ 。要求将这个序列分成最多的子序列,使这些子序列按升序排序后,总体序列也成为一个升序序列。 在对子序列进行排序的过程中,只是对子序列中的元素进行升序排序,不在子序列中的元素不会改变它们的位置。 序列中的每个元素都只能且必须在所有子序列中出现一次。(译者:子序列不重合)

输入格式

第一行包括一个整数N表示序列的长度$n(1

输出格式

第一行输出整数$k$ ,表示可以分成最多的子序列数量。 接下来$k$ 行,每行包括:该子串元素个数$c_{i}$ ,和$c_{i}$ 个整数$l_{1},l_{2},...,l_{c_{i}}$ 表示子串元素。 可以以任何顺序输出所有子串,但要保证原序列中所有元素都只出现过一次。 如果有多种解法,则输出任意一种。 感谢@二元长天笑 提供的翻译

说明/提示

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.