A - マスキングテープ (Masking Tape) 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点: 100

問題文

JOI 君は,紙とマスキングテープを使い,色塗りをして遊んでいる.

紙は長方形であり,縦 H 行,横 W 列のマス目が描かれている.上から i 行目 (1 \leqq i \leqq H),左から j 列目 (1 \leqq j \leqq W) のマスをマス (i, j) と呼ぶ.

それぞれのマスには色が 1 つ定められている.色は整数で表され,はじめすべてのマスの色は 0 である.

JOI 君は,この紙とマスキングテープを用いて Q 回の操作を行う. k 回目 (1 \leqq k \leqq Q) の操作は,整数 q_k の値に応じて以下のように説明される.

  • q_k = 1 のとき,この操作は整数 x_k, y_k, c_k で表される.マス (x_k, y_k), (x_k + 1, y_k), (x_k, y_k + 1), (x_k + 1, y_k + 1) それぞれについて,マスがマスキングテープで覆われていなければ,そのマスの色を c_k に変更する.マスがマスキングテープで覆われているならば,そのマスには何もしない.
  • q_k = 2 のとき,この操作は整数 x_k, y_k で表される.マス (x_k, y_k), (x_k + 1, y_k), (x_k, y_k + 1), (x_k + 1, y_k + 1) をマスキングテープで覆う.

Q 回の操作が終わった後,すべてのマスキングテープを剥がす.なお,あるマスのマスキングテープを剥がしたとき,そのマスの色はマスキングテープで覆われる直前の色と同じになる.

Q 回の操作の情報が与えられたとき,最終的な紙のすべてのマスの色を求めるプログラムを作成せよ.

制約

  • 2 \leqq H \leqq 500
  • 2 \leqq W \leqq 500
  • 1 \leqq Q \leqq 200 \: 000
  • q_k12 のいずれかである (1 \leqq k \leqq Q).
  • q_k = 1 のとき,1 \leqq x_k \leqq H - 11 \leqq y_k \leqq W - 11 \leqq c_k \leqq 10^9 (1 \leqq k \leqq Q).
  • q_k = 2 のとき,1 \leqq x_k \leqq H - 11 \leqq y_k \leqq W - 1 (1 \leqq k \leqq Q).
  • 入力される値はすべて整数である.

小課題

  1. (32 点) H = 2W = 2q_k = 1 (1 \leqq k \leqq Q).
  2. (32 点) q_k = 1 (1 \leqq k \leqq Q).
  3. (36 点) 追加の制約はない.

入力

入力は以下の形式で与えられる.

H W Q 
(Query \: 1)
(Query \: 2)
\vdots
(Query \: Q)

各 (Query \: k) (1 \leqq k \leqq Q) にはいくつかの整数が空白区切りで書かれている.そのうち 1 個目の整数が q_k であり,この行の内容は以下のいずれかである.

  • q_k = 1 のとき,この行には続いて 3 個の整数 x_k, y_k, c_k が空白区切りで書かれている.
  • q_k = 2 のとき,この行には続いて 2 個の整数 x_k, y_k が空白区切りで書かれている.

出力

最終的な紙のすべてのマスの色を H 行で出力せよ.i 行目 (1 \leqq i \leqq H) には,W 個の整数を空白区切りで出力せよ.ここで,j 番目 (1 \leqq j \leqq W) に出力する整数はマス (i, j) の色とする.


入力例 1

5 5 4
1 2 2 1
2 1 2
2 3 3
1 1 3 5

出力例 1

0 0 0 5 0
0 1 1 5 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0

4 回の操作を順に見ていく.

1 回目の操作について,q_1 = 1 である.マス (2, 2)(2, 3)(3, 2)(3, 3) はすべてマスキングテープで覆われていないので,色を 1 に変更する.

このとき,紙は以下のようになっている.

0  0  0  0  0
0  1  1  0  0
0  1  1  0  0
0  0  0  0  0
0  0  0  0  0

2 回目の操作について,q_2 = 2 である.マス (1, 2)(1, 3)(2, 2)(2, 3) をマスキングテープで覆う.

このとき,紙は以下のようになっている.なお,マスキングテープで覆ったマスの色を表す整数の右に * を付けた.

0  0* 0* 0  0
0  1* 1* 0  0
0  1  1  0  0
0  0  0  0  0
0  0  0  0  0

3 回目の操作について,q_3 = 2 である.マス (3, 3)(3, 4)(4, 3)(4, 4) をマスキングテープで覆う.

このとき,紙は以下のようになっている.

0  0* 0* 0  0
0  1* 1* 0  0
0  1  1* 0* 0
0  0  0* 0* 0
0  0  0  0  0

4 回目の操作について,q_4 = 1 である.マス (1, 4)(2, 4) はマスキングテープで覆われていないので,色を 5 に変更する.マス (1, 3)(2, 3) はマスキングテープで覆われているので,何もしない.

このとき,紙は以下のようになっている.

0  0* 0* 5  0
0  1* 1* 5  0
0  1  1* 0* 0
0  0  0* 0* 0
0  0  0  0  0

したがって,最終的な紙のすべてのマスの色は出力例のようになっている.

この入出力例は小課題 3 の制約を満たす.


入力例 2

5 5 3
1 1 1 2
1 3 3 3
1 2 4 2

出力例 2

2 2 0 0 0
2 2 0 2 2
0 0 3 2 2
0 0 3 3 0
0 0 0 0 0

この入出力例は小課題 2, 3 の制約を満たす.


入力例 3

10 10 10
2 5 7
2 5 6
1 5 6 1
1 9 2 1
2 1 1
1 2 4 2
2 3 2
1 2 2 3
1 9 9 2
1 8 8 1

出力例 3

0 0 0 0 0 0 0 0 0 0
0 0 3 2 2 0 0 0 0 0
0 0 0 2 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 0
0 1 1 0 0 0 0 1 1 2
0 1 1 0 0 0 0 0 2 2

この入出力例は小課題 3 の制約を満たす.