#P3314. Plaque Pack
Plaque Pack
描述
设计了各种形状独特的 。所有 plaques 的厚度均为 英寸,形状多样(部分形状示例如下)。
是运输部门的员工之一(他们喜欢自称为 )。每天他需要将特定宽度的 plaques 运输到各百货商店。他使用的盒子深度为 ,宽度与 的宽度相同。当 从装配线下来时,他需将它们依次装入盒子。每个 放入盒子时,会向下滑动直至其某部分接触到盒内已有的最上层 (或盒底,若为第一个 )。例如,若最左侧的 plaque 先从装配线下线,接着是中间和右侧的,它们会按左图方式堆叠;若按相反顺序下线,则按右图方式堆叠。
当某个 放入盒子后会超出盒子高度时,Ben 会关闭当前盒子并启封新盒。在上述示例中,若盒子高度为 ,第一种顺序需两个盒子,第二种顺序仅需一个。在打包间隙,Ben 好奇如果让数百名程序员编写代码模拟这一单调工作会是什么样。
输入
输入包含多个测试用例。每个测试用例以一行三个整数 、、 开始,分别表示需运输的 数量、每个 的宽度和每个运输盒的高度,范围分别为 、、。接下来是 个 的形状描述:每个形状描述以一个整数 (表示 的高度, 且 )开始,随后 行每行包含 个字符('X' 表示 的实体部分,'.' 表示空白)。输入中 的顺序即为装箱顺序,不可旋转或翻转 plaque。输入以行 结束。
输出
对每个测试用例,输出一行整数,表示每个盒子中 的最大高度(按装盒顺序)。
输入数据 1
3 5 12
5
XXXXX
.XXXX
..XXX
...XX
....X
4
XXX..
..X..
..XXX
..X..
6
X....
X....
X....
X....
X....
XXXXX
3 5 12
6
X....
X....
X....
X....
X....
XXXXX
4
XXX..
..X..
..XXX
..X..
5
XXXXX
.XXXX
..XXX
...XX
....X
0 0 0
输出数据 1
9 6
10
来源
East Central North America