003 - 連鎖消滅パズル
時間制限 8 秒 / メモリ制限 64 MB / 得点 15 / x 2 /
問題
皆さんはあるパズルに取り組んでいる. このパズルには,下図に示すような,H 行,5 列のセルからなる,直立した盤を使う. 各セルには1から9までの数字が1つ刻まれた石が配置されている. 3個以上の水平に隣り合うセルに同じ数字を彫った石があれば,これらの石は消滅する. 石が消滅したセルの上方のセルに石があれば,それらは順次落ちて空きを埋める.
パズルは以下のステップに従って進行する.
- 3個以上の水平に隣り合うセルに同じ数字を彫った石があれば,これらの石は消滅する.こうした石群の消滅はすべて同時に起きる.
- 石が消滅したセルの上方のセルに石があれば,空きを埋めるように石が落下する.
- すべての石の落下完了後に,消滅の条件を満たすようになった石群があれば,ステップ1に戻って繰り返す.
与えられた石の配置で獲得できるスコアを計算するプログラムを作れ.
Input
入力は複数のデータセットからなる. 各データセットは以下の形をしている
盤面の高さ H
行1の石の並び
行2の石の並び
...
行 H の石の並び
各データセットの1行目には,パズル盤の高さ( H )が指定されている(1 ≤ H ≤ 10). 残りの H 行には,各行の石の並びが上から下の順に指定されている. 石の並びは空白で区切った1から9までの5個の数字で与えられる. 数字はその順に当該の行の5個の石に彫られている.
入力の終わりは,1つのゼロからなる行で示す.
Output
各データセットに対して,スコアを求め1行に出力せよ. 各出力行はスコアを表す数字以外を含んではならない.
Sample Input/Output
Sample Input
1 6 9 9 9 9 5 5 9 5 5 9 5 5 6 9 9 4 6 3 6 9 3 3 2 9 9 2 2 1 1 1 10 3 5 6 5 6 2 2 2 8 3 6 2 5 9 2 7 7 7 6 1 4 6 6 4 9 8 9 1 1 8 5 6 1 8 1 6 8 2 1 2 9 6 3 3 5 5 3 8 8 8 5 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 3 2 2 8 7 4 6 5 7 7 7 8 8 9 9 9 0
Output for the Sample Input
36 38 99 0 72