[GZOI2011]组合式家具

成绩 0 开启时间 2013年02月21日 星期四 23:02
折扣 0.8 折扣时间 2013年02月28日 星期四 23:02
允许迟交 关闭时间 2013年02月28日 星期四 23:02
输入文件 pack.in 输出文件 pack.out

题目描述
你在一个组合式家具厂工作,这种组合式家具由各种形状不同的组件组成,例如:
1
图1 三种不同形状的组件
这些组件生产出来后将被自动装箱,组件按生产的次序落下,第一个组件落在箱子底部,其后的组件依次落下,直至组件接触到之前装入的组件或箱子底部。例如,假设组件按图1从左至右的次序生产出来,装箱结果将如图2左所示。假如按图1从右至左的次序生产出来,装箱结果将如图2右所示。
2
图2 不同的生产次序导致两种不同的装箱结果
由于箱子高度有限,如图2左,三个组件已经超过了箱子的高度,这种情况第三个组件及之后的组件需要用新的箱子来装。
你的工作是为自动装箱系统编写程序,根据组件生产的次序,输出装完这些组件后,每个箱子的组件堆叠的高度。
输入格式(Pack.in):
第一行是用空格分隔的三个整数n,w,b。n是一套家具的组件数,1<=n<=100,w和b是箱子的宽和高,1<=w<=10,1<=b<=100。接下来是n个组件的形状描述,按生产的次序排列,每个组件描述第一行是一个整数h,1<=h<=10且h<=b,接下来h行每行w个字符,描述组件的形状,“X”代表组件的部分,“.”代表空间。
输出格式(Pack.out):
m个整数(m代表装箱所需的箱子数),按装箱的次序输出m个箱子里组件的高度。
样例


Pack.in

Pack.out

3 5 12
5
XXXXX
.XXXX
..XXX
...XX
....X
4
XXX..
..X..
..XXX
..X..
6
X....
X....
X....
X....
X....
XXXXX

9 6