俄罗斯方块
题号:NC214592
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小z刚刚小学毕业,他准备以玩游戏度过这个短暂的假期,找了许多游戏,他发现俄罗斯方块最好玩,但由于
小z比较笨,只能玩简单版的俄罗斯方块。
简单的俄罗斯方块规则如下:
有一个横为 6,高为 7 的区域(如下图),各种类型的方块将从上部掉落。  只有三种类型的方块,分别是
Type1: Type2: Type3: 玩家可以做的操作有:旋转方块,以格子为单位左右移动方块。
方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处。
当区域中某一行横向格子全部由方块填满,则该行会消失。
当方块堆到区域之上,则游戏结束。
注意:所有方块都会在下降到局域内前进行旋转和平移,不能在区域内进行操作,也就是相当于旋转和平
移好的方块直接落进区域内。
游戏中会有 n 个方块掉落,当 n 个方块放置结束或者方块超出区域之上,则游戏结束。
由于 小z太笨了,需要你算出最多消除的行数。
你能帮助他吗?

输入描述:

第一行包含一个整数 n,表示掉落的方块个数。
第二行有 n 个整数,每个整数 type 代表掉落的方块种类(种类按照游戏规则,即 type=1 代表一个 1*4 的方块)。

输出描述:

一个数 ans,代表最多的消除行数。
示例1

输入

复制
3
1 1 2

输出

复制
2
示例2

输入

复制
5
1 1 2 2 2

输出

复制
3

备注:

数据范围
对于 10%的数据,保证 type = 1.
对于另 10%的数据,保证 type = 2.
对于 100%的数据, n <= 10。