#2515. 「CEOI2011」Teams

内存限制:256 MiB 时间限制:2500 ms 标准输入输出
题目类型:传统 评测方式:Special Judge
上传者: diamond_duke

题目描述

n 个小朋友要进行比赛,他们要被分为若干队伍。每一个小朋友都有一个要求,其中第 i 个小朋友要求他所在的队伍最少要有 a_i 个人(包括自己)。
现在请你求出一种划分方案,在满足所有小朋友的要求的情况下,最大化队伍的数量。同时在此基础上,请你最小化人数最多的队伍的人数。

输入格式

第一行一个数 n 表示小朋友的个数。
接下来 n 行,每行一个数,其中第 i 行的数字为 a_i

输出格式

第一行一个数 t ,表示在你的方案中的队伍数量。
接下来 t 行,每行若干个空格隔开的数字,表示一只队伍。每一行首先输出一个数 k_i 表示第 i 只队伍的人数,接下来 k_i 个数依次描述该队伍内的小朋友的编号(从 1 开始)。
若有多解(在满足题目要求的情况下),输出任意一个即可。

样例

样例输入

5
2
1
2
2
3

样例输出

2
2 4 2
3 5 1 3

数据范围与提示

对于 50\% 的数据,有 n\le 5\ 000
对于 100\% 的数据,有 1\le n\le 1\ 000\ 000;1\le a_i\le n ,输入保证有解。