#Libre3297. 「BalticOI 2012 Day2」俄罗斯方块
「BalticOI 2012 Day2」俄罗斯方块
题目描述
译自 BalticOI 2012 Day2 T3. Tiny
有不少人还记得当年由 Alexey Pajitnov 发明的游戏——俄罗斯方块(TETRIS)。在游戏中,由四个方块组成的碎片从上面掉落,游戏的目标是将碎片落在相应的位置,形成尽可能多的完全填满的行。当一行被方块完全填满时,这一行的方块消失,上面的方块掉落,从而为下落的碎片提供更多空间。
在这个问题中,我们将研究俄罗斯方块的一个简易版本:Tiny TETRIS(简称 Tiny)。一共有九种碎片,每个碎片都由不超过三个方块组成。

(每个碎片种类编号标在了相应碎片下方)
Tiny 的游戏目标和俄罗斯方块是一样的。游戏中每个碎片将会落入一个 的区域。但与俄罗斯方块不同的是,Tiny 中碎片不能旋转,且一旦开始下落,碎片就不能向左或向右移动。这意味着玩家只能在某个碎片开始下落的时候,指定一个列的编号,这个碎片中打 的方块将会落在该列上。
每次游戏有 个碎片,你需要将尽可能多的碎片放入区域中,且碎片不能超过区域顶端或进行非法操作。你的得分将与成功放入的碎片数有关。
形式化地说,我们维护一个计数器,这个计数器的初值为 ,则 Tiny 的游戏过程如下:
- 玩家选择当前碎片最左边方块所在的列;
- 如果选择的列合法(例如对于第 种碎片,选择落在第 列是不合法的),这个碎片会向下掉落,直到碰到障碍物为止,否则游戏结束;
- 如果碎片完全落在区域内,则计数器的值加一,否则游戏结束;
- 接下来检查是否有被方块完整填满的行,如果有,这一行的所有方块消失,上面的方块则在不改变相对位置的情况下向下移动;
- 如果还有碎片,则回到第 步,否则游戏结束。
你的得分将会是游戏结束时计数器的值。
输入格式
输入文件 tiny.i1 tiny.i5 请点击附加文件下载。
输入文件第一行为一个整数 ,代表游戏共有 个碎片。
接下来 行,第 行一个 的整数,代表第 个下落的碎片种类。
输入文件保证存在一种方案,使得 个碎片全部落入区域中。
输出格式
对于输入文件 tiny.i1 tiny.i5,请提交对应的输出文件 tiny.o1 tiny.o5。
输出文件最多包含 行,第 行包含一个整数,代表第 个下落的碎片中,最左边方块落在的列的编号。
数据范围与提示
每个测试点 分。
设你在该测试点游戏结束时的计数器的值为 ,所有选手中计数器的最大值为 ,则该测试点的得分为 。
在 LibreOJ 评测时,(即你需要使得所有碎片均成功下落才能得到满分)。
请注意,如果您输出了 行,请确保前 个碎片全部正常下落,否则 checker 将无法正确评判您的提交。