#B3776. [信息与未来 2022] 俄罗斯方块(暂无 Special Judge)

[信息与未来 2022] 俄罗斯方块(暂无 Special Judge)

题目描述

“俄罗斯方块”是一款经典的电子游戏。你现在希望编写一个可以自动玩“俄罗斯方块”的人工智能。“俄罗斯方块”初始时有一个高度无限、宽度是 66 的矩形,并且矩形中所有的小方格都是空的。你将按顺序得到一系列零件,每个零件是以下两种类型之一,分别命名为 AABB

在得到一个零件后,你可以先将零件任意旋转,然后使零件从足够高处垂直下落到矩形的任意列中(但零件不能超出矩形的左右边界)。零件在垂直下落的过程中,在即将触碰到矩形底部或任意一个之前已经被固定住的零件后都会被立即固定。如下图所示,编号为 11(类型为 AA)和 22(类型为 BB)的零件已经被固定,此时固定第三个零件的若干可能方法有:

现在你已经得到了所有零件给出的顺序,你的任务是按照顺序尽可能紧凑、没有空隙地固定所有的零件,以得到尽可能高的分数。具体来说,你给出的固定方案中不能包含超过 1010 个未被填满的非空行

输入格式

输入一行一个仅由大写字母 "A"\texttt{"A"}"B"\texttt{"B"} 字符组成的字符串,代表你得到的零件序列。

输出格式

按照以下规则将你固定的所有零件绘制出来(参考样例输出):

  • 从最高的非空行开始,从高到低输出矩形中的每一行;
  • 每一行的输出都包含 77 个竖线 "|"\texttt{"|"},用于分隔 66 个方格中固定的零件编号。如果一个方格中没有固定任何零件,则输出不超过 1010 个空格;
  • 必须保证固定方案满足游戏规则,且未被填满的非空行不超过 1010 个。

你可以在数字和竖线之间输出不超过 1010 个空格使你的方案更容易阅读(样例输出中包含了额外的空格)。评测时这些空格将被忽略。

AABAABAAABAAABB
| 13 | 13 | 14 | 14 | | |
| 13 | 9 | 11 | 11 | 15 | 15 |
| 9 | 9 | 10 | 11 | 12 | 12 |
| 6 | 6 | 10 | 7 | 12 | 8 |
| 5 | 5 | 7 | 7 | 8 | 8 |
| 5 | 1 | 2 | 4 | 4 | 3 |
| 1 | 1 | 2 | 2 | 4 | 3 |
AAAAABBBBBAAABABABABAABABAABBAAB
|29| |30| |31|32|
|29|30|30|31|31|32|
|25|26|26|27|28|28|
|25|21|26|27|27|24|
|21|21|22|22|24|24|
|18|18|22|19|23|23|
|17|17|19|19|20|20|
|17|14|15|15|16|16|
|10|14|11|15|13|13|
|10|11|11|12|12|13|
| 7| 7| 8| 8|12| 9|
| 2| 2| 4| 4| 6| 9|
| 2| 1| 4| 3| 6| 5|
| 1| 1| 3| 3| 5| 5|

提示

说明:数字和竖线之间可以有不超过 1010 个空格。

对于 50%50\% 的数据,输入的字符串可以写成是某个长度不超过 33 的字符串的多次重复,例如 "ABABABAB...AB"\texttt{"ABABABAB...AB"}"BBABBABBA...BBA"\texttt{"BBABBABBA...BBA"}
对于 100%100\% 的数据,零件的数量(即输入字符串的长度)不超过 10,00010,000