
Codeforces 是目前全世界最大的算法练习和竞赛平台之一,几乎所有的 ACMer 都会在上面刷题,CF 的 Rating 也作为很多学校集训队的入选标准。
Clist 会基于 CF 的赛时情况,根据赛时通过者的 Rating 中位数来确定题目的 Rating。
一天,CReatiQ 在集训队群里发布了一份题单,其中按顺序给出了 n 道题目,以及每道题目的 Rating r_i。
规定每个队员可以选择做或不做题单中的某一道题,但当做出题单中的第 i 题后,就不能再做序号在 i 之前的题目。
此外,如果队员已经做过某道题目,就不能再做 Rating 比该题低的题目,不然就会被 CReatiQ 鉴定为“刷水题”。
现在队员 Kan_kiz 想知道:
她按照什么顺序做题,可以做出最多的题目。
至少需要多少队员合作,可以做完题单中的所有题目,此时每个队员应该按照什么顺序做题。
如果有多种方案,你只需要输出其中任意一种。
输入
第一行一个整数 n (1 \leq n \leq 2 \times 10^5),表示题单中的题目数量。
第二行 n 个正整数 r_i (1 \leq r_i \leq 10^9),依次表示题单中每题的 Rating。
输出
第一行一个正整数 ans_1 表示 Kan_kiz 能做出的最多题目数。
第二行 ans_1 个正整数,表示 Kan_kiz 做出最多题目数情况下,做出各题的编号(从小到大输出)。
第三行一个正整数 ans_2 表示做完题单中的所有题目需要的最少队员数。
之后是为做完题单中的所有题目,各队员分配题目的方案:
共有 ans_2 行,每行先输出一个正整数 m_i,表示一个队员做出的题目数;随后 m_i 个正整数,表示该队员做出各题的编号(从小到大输出)。
样例
| 标准输入 复制文本 |
12 1 1 4 5 1 4 1 9 1 9 8 10 |
| 标准输出 复制文本 |
7 1 2 5 7 9 11 12 3 5 1 2 5 6 11 7 1 2 3 4 8 10 12 7 1 2 5 7 9 11 12 |
提示
lower_bound 与 upper_bound 支持重载运算符。