問題一覧 > 通常問題

No.459 C-VS for yukicoder

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 58
作問者 : mai / テスター : tubo28
2 ProblemId : 1435 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-02-10 00:21:00

Note

この問題はAdvent Calendar Contest Advent Calendar 2016の10日目の問題として作られました。
codevsお疲れ様でした!(2016/12/10)

問題文

maiさんはc-vsと呼ばれるゲームAIコンテストに参加しています。


c-vsとは?

高さHHWWのフィールドに与えられたパック(高さ3幅3の、少なくとも1つのブロックを含む塊)を落とす、いわゆる「ぷよぷよゲー」です。
連鎖してブロックを消すはずですが、後述の事情により、落とすだけのゲームになっています。

c-vsは、次の流れに従ってゲームが進行します。

  1. パックが与えられ、プレイヤーは投下位置を決める。
    指定出来るのは00からW3W-3の範囲の整数で、00は左端、W3W-3は右端から2つ左に移動した位置である。回転はできない。
  2. 決めた投下位置にパックの左端を合わせ、その位置にパックを落下させる。
  3. ブロックは下に床があるか、積まれたブロックに当たるまで落下する。
  4. 1から3までの流れを1ターンとする。これを繰り返す。

maiさんは舞葉君とマッチングし、ゲームが開始しました。

しかし、ゲームが開始した瞬間、舞葉君は特殊コマンドを入力したため、フィールドに落ちてくるパックに含まれるブロックが全て黒に塗りつぶされてしまいました。
これでは連鎖してブロックを消すことが出来ません。

maiさんはiiターン目のパックの投下位置をCiC_iに指定しました(1iN1 \le i \le N)。結果、NNターン目の3.が終了した時点でのフィールドの状態はSSでした。


どのようなパックが与えられたのでしょうか?maiさんに与えられたNN個のパックの中身を求めてください。

入力

HH WW NN
S1S_1
S2S_2
...
SHS_H
C1C_1
C2C_2
......
CNC_N

以下の制約をすべて同時に満たす。
3W100003 \le W \le 10000
1H100001 \le H \le 10000
3H×W300003 \le H \times W \le 30000
1Nmin{H×W,30000}1 \le N \le \min \{ H \times W , 30000 \}
Si=W|S_i| = W
SiS_iは'.'と'#'から成る文字列で、1つ以上'#'を含む。
0CiW30 \le C_i \le W-3
数字が与えられるものは全て整数である

フィールドの状態SSHH個の文字列S1,S2,...,SHS_1,S_2,...,S_Hで表現されます。
左からxx番目、上からyy番目のフィールドのセルは、文字列SyS_yの左からxx番目に対応し、
'#'であればそのセルにブロックが存在、'.'であれば空であることを示します。

与えられるフィールドの状態は、題意を満たすゲームの進行によって得られるものに限られます。

出力

パックを次のフォーマットに従って、改行区切りでNN個出力してください。すなわち、3×N3 \times N行出力してください。
上からii番目のパックはCiC_iに対応するようにしてください。

パックは3行3文字の文字列で表現されます。
パックの上からyy番目、左からxx番目のセルはyyxx文字目に対応し、
そのセルが空ならば'.'、ブロックが存在するならば'#'となります。

問題文にもありますが、全てのパックは必ず1つ以上のブロックを持つことに注意してください。

最後に改行してください


c++14によるスペシャルジャッジを使用しています。
解は1つとは限りませんが、どの解を出力してもACとなります。

サンプル

サンプル1
入力
4 5 3
...#.
...#.
..##.
#.###
0
2
2
出力例
...
#..
..#
##.
.#.
...
..#
.#.
.#.

出力例は解の1つであり、要件を満たせばこの出力に一致していなくてもACとなります。

サンプル2
入力
3 3 2
###
###
###
0
0
出力例
...
...
#..
.##
###
###

ブロックを持たないパックは出力しないでください。

サンプル3
入力
4 11 5
....#......
##.##..##..
##.###.####
######.####
0
2
4
6
8
出力例
##.
##.
##.
.##
.##
###
...
.#.
##.
.#.
.##
.##
...
.##
###

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。