#P1642. Stacking Cubes

    ID: 643 传统题 1000ms 256MiB 尝试: 3 已通过: 1 难度: 5 上传者: 标签>模拟计算几何难度普及/提高-East Central North America 2000

Stacking Cubes

#P1642. 堆叠立方体
描述
考虑以下由正整数组成的模式:

33 33 11

33 11

22

请注意,每一行均左对齐,且长度不超过前一行。此外,每行从左到右读取时元素非递增,每列从上到下读取时元素也非递增。我们称这种模式为堆叠模式(SP),因为它可以按以下方式表示在角落堆叠立方体的情况:若将最顶层行和最左列紧靠墙壁放置,则SP给出俯视视角下垂直堆叠的立方体数量。上述SP对应的角落堆叠如下:

我们将紧靠最顶层行的墙称为右墙,紧靠最左列的墙称为左墙。以下是另一个SP及其对应的角落堆叠:

请注意,若旋转角落堆叠使左墙变为地面、地面变为右墙,仍为角落堆叠(称为左旋转)。类似地,若旋转使右墙变为地面、地面变为左墙,也仍为角落堆叠(称为右旋转)。因此,上述第一个SP的左旋转和右旋转对应的SP如下:

33 22 11    33 33 22

22 11 11    22 11 11

22 11      11

你应验证第二个示例SP的左右旋转结果与原SP相同。

输入
本题包含多个测试用例。每个测试用例包含一个正整数n11n \leq 11,表示后续SP的行数(n=0n = 0表示输入结束)。接下来是SP的各行,每行元素以空格分隔,以尾随的00作为结束(该00不属于实际输入数据,且每行至少有一个立方体)。模式中的每个元素均为不超过2020的正整数,每行元素不超过2020个。

输出
对每个输入SP,应按顺序生成左旋转和右旋转对应的两个堆叠模式。SP的行左对齐,元素以空格分隔。左旋转与右旋转结果之间用一个空行分隔,不同测试用例的输出之间用两个空行分隔。

输入数据 1

3  
3 3 1 0 
3 1 0 
2 0  
6  
6 5 5 4 3 3 0  
6 4 3 3 1 0 
6 4 3 1 1 0 
4 2 2 1 0
3 1 1 0 
1 1 1 0 
0  

输出数据 1

3 2 1
2 1 1 
2 1   

3 3 2 
2 1 1  
1  


6 5 5 4 3 3
6 4 3 3 1
6 4 3 1 1
4 2 2 1
3 1 1
1 1 1  

6 5 5 4 3 3
6 4 3 3 1
6 4 3 1 1
4 2 2 1
3 1 1
1 1 1  

来源
2000年北美中东部地区赛