#P51302. 「BalticOI 2012 Day2」俄罗斯方块

「BalticOI 2012 Day2」俄罗斯方块

Cannot parse: undefinedms error parsing time

题目描述

译自 BalticOI 2012 Day2 T3. Tiny

有不少人还记得当年由 Alexey Pajitnov 发明的游戏——俄罗斯方块(TETRIS)。在游戏中,由四个方块组成的碎片从上面掉落,游戏的目标是将碎片落在相应的位置,形成尽可能多的完全填满的行。当一行被方块完全填满时,这一行的方块消失,上面的方块掉落,从而为下落的碎片提供更多空间。

在这个问题中,我们将研究俄罗斯方块的一个简易版本:Tiny TETRIS(简称 Tiny)。一共有九种碎片,每个碎片都由不超过三个方块组成。

tiny4.jpg

(每个碎片种类编号标在了相应碎片下方)

Tiny 的游戏目标和俄罗斯方块是一样的。游戏中每个碎片将会落入一个 9×99 \times 9 的区域。但与俄罗斯方块不同的是,Tiny 中碎片不能旋转,且一旦开始下落,碎片就不能向左或向右移动。这意味着玩家只能在某个碎片开始下落的时候,指定一个列的编号,这个碎片中打 ×\times 的方块将会落在该列上。

每次游戏有 NN 个碎片,你需要将尽可能多的碎片放入区域中,且碎片不能超过区域顶端或进行非法操作。你的得分将与成功放入的碎片数有关。

形式化地说,我们维护一个计数器,这个计数器的初值为 00,则 Tiny 的游戏过程如下:

  1. 玩家选择当前碎片最左边方块所在的列;
  2. 如果选择的列合法(例如对于第 55 种碎片,选择落在第 88 列是不合法的),这个碎片会向下掉落,直到碰到障碍物为止,否则游戏结束;
  3. 如果碎片完全落在区域内,则计数器的值加一,否则游戏结束;
  4. 接下来检查是否有被方块完整填满的行,如果有,这一行的所有方块消失,上面的方块则在不改变相对位置的情况下向下移动;
  5. 如果还有碎片,则回到第 11 步,否则游戏结束。

你的得分将会是游戏结束时计数器的值。

输入格式

输入文件 tiny.i1 \sim tiny.i5 请点击附加文件下载。

输入文件第一行为一个整数 NN,代表游戏共有 NN 个碎片。

接下来 NN 行,第 ii 行一个 191 \sim 9 的整数,代表第 ii 个下落的碎片种类。

输入文件保证存在一种方案,使得 NN 个碎片全部落入区域中。

输出格式

对于输入文件 tiny.i1 \sim tiny.i5,请提交对应的输出文件 tiny.o1 \sim tiny.o5

输出文件最多包含 NN 行,第 ii 行包含一个整数,代表第 ii 个下落的碎片中,最左边方块落在的列的编号。

数据范围与提示

每个测试点 2020 分。

设你在该测试点游戏结束时的计数器的值为 XX,所有选手中计数器的最大值为 YY,则该测试点的得分为 20×XY\dfrac{20 \times X}{Y}

在 LibreOJ 评测时,Y=NY=N(即你需要使得所有碎片均成功下落才能得到满分)。

请注意,如果您输出了 ii 行,请确保前 i1i-1 个碎片全部正常下落,否则 checker 将无法正确评判您的提交。