マスキングテープ (Masking Tape)

시간 제한2초메모리 제한2048 MB

요약
2x2 블록을 칠하거나 테이프로 덮는 Q번의 연산을 처리한 뒤, 테이프를 모두 떼었을 때의 최종 색을 출력한다.
난이도

보통10점 중 6점

유형
시뮬레이션, 구현, 배열
정답자
아직 제출이 없습니다

문제

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

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

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

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

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

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

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

입력

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

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

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

  • qk = 1 のとき,この行には続いて 3 個の整数 xk, yk, ck が空白区切りで書かれている.
  • qk = 2 のとき,この行には続いて 2 個の整数 xk, yk が空白区切りで書かれている.

출력

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

제한

  • 2 ≦ H ≦ 500.
  • 2 ≦ W ≦ 500.
  • 1 ≦ Q ≦ 200 000.
  • qk は 1 か 2 のいずれかである (1 ≦ k ≦ Q).
  • qk = 1 のとき,1 ≦ xk ≦ H - 1,1 ≦ yk ≦ W - 1,1 ≦ ck ≦ 109 (1 ≦ k ≦ Q).
  • qk = 2 のとき,1 ≦ xk ≦ H - 1,1 ≦ yk ≦ W - 1 (1 ≦ k ≦ Q).
  • 入力される値はすべて整数である.

예제3

  1. 예제 1

    입력
    5 5 4
    1 2 2 1
    2 1 2
    2 3 3
    1 1 3 5
    
    예상 출력
    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
    
  2. 예제 2

    입력
    5 5 3
    1 1 1 2
    1 3 3 3
    1 2 4 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
    
  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
    
    예상 출력
    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