#17971. ProblemIIIII

ProblemIIIII

题目描述

小 Y 正在小熊的水果店里帮忙呢!店里有一排整齐的水果,一共有 n 个,每个不是红彤彤的苹果就是黄澄澄的桔子,从左到右分别标着 1、2、…、n 的号码。

小 Y 发现,这些水果是 “成块” 排列的 —— 连续挨在一起的同一种水果就组成了一个 “块”。比如左边有 3 个苹果挨在一起,这就是一个 “苹果块”;接着如果有 2 个桔子挨在一起,就是一个 “桔子块”;再后面要是又有苹果,就又是新的苹果块啦。

小熊说要把这些水果装进果篮,装的方法很特别:每次都要看看当前所有的 “块”,把每个块最左边的那个水果挑出来,凑成一个果篮。等挑完这个果篮后,原来的块可能会变哦 —— 比如某个块原来有 3 个水果,挑走最左边的 1 个后,就剩下 2 个了;要是某个块只有 1 个水果,挑走后这个块就消失啦。更有趣的是,如果两个相邻的块,因为挑走水果后变成了同一种水果且紧紧挨在一起,它们就会合成一个新的块!比如原来有 “苹果块→桔子块→苹果块”,挑走每个块最左边的水果后,桔子块可能刚好被挑完,剩下的两个苹果块就会连在一起,变成一个大苹果块啦。

小 Y 的任务就是帮小熊记录:每次装果篮时,这个果篮里到底装了哪些水果(按从左到右的顺序哦),直到所有水果都被装进果篮为止~ 你能和小 Y 一起想想怎么算吗?

输入格式

第一行,包含一个正整数 nn,表示水果的数量。

第二行,包含 nn 个空格分隔的整数,其中第 ii 个数表示编号为 ii 的水果的种类,11 代表苹果,00 代表桔子。

输出格式

输出若干行。

ii 行表示第 ii 次挑出的水果组成的果篮。从小到大排序输出该果篮中所有水果的编号,每两个编号之间用一个空格分隔。

样例 #1

样例输入 #1

12
1 1 0 0 1 1 1 0 1 1 0 0

样例输出 #1

1 3 5 8 9 11
2 4 6 12
7
10

样例 #2

样例输入 #2

20
1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0

样例输出 #2

1 5 8 11 13 14 15 17
2 6 9 12 16 18
3 7 10 19
4 20

提示

【样例解释 #1】

这是第一组数据的样例说明。

所有水果一开始的情况是 [1,1,0,0,1,1,1,0,1,1,0,0][1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0],一共有 66 个块。

在第一次挑水果组成果篮的过程中,编号为 1,3,5,8,9,111, 3, 5, 8, 9, 11 的水果被挑了出来。

之后剩下的水果是 [1,0,1,1,1,0][1, 0, 1, 1, 1, 0],一共 44 个块。

在第二次挑水果组成果篮的过程中,编号为 2,4,6,122, 4, 6, 12 的水果被挑了出来。

之后剩下的水果是 [1,1][1, 1],只有 11 个块。

在第三次挑水果组成果篮的过程中,编号为 77 的水果被挑了出来。

最后剩下的水果是 [1][1],只有 11 个块。

在第四次挑水果组成果篮的过程中,编号为 1010 的水果被挑了出来。

【数据范围】

对于 10%10 \% 的数据,n5n \le 5。 对于 30%30 \% 的数据,n1000n \le 1000。 对于 70%70 \% 的数据,n50000n \le 50000。 对于 100%100 \% 的数据,1n2×1051 \le n \le 2 \times {10}^5