퍼레이드

시간 제한1초메모리 제한128 MB

요약
4x4 격자에 대한 N개의 둘레 회전 명령 목록에서 Q번의 누적 갱신이 주어질 때, 각 갱신 후 명령을 모두 수행한 결과 격자를 출력한다.
난이도

보통10점 중 7점

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

문제

5월 9일은 전승 기념일로, 매년 붉은 광장에서 승전 퍼레이드가 열립니다. 이 퍼레이드를 디지털로 재현하기 위해, 하나의 대형(formation)이 어떻게 바뀌는지를 추적해야 합니다.

대형은 4×44 \times 4 격자입니다. 사람들은 처음에 행 우선(row-major) 순서로 11번부터 1616번까지 번호가 매겨져 있습니다.

1  2  3  4
5  6  7  8
9  10 11 12
13 14 15 16

이후 명령이 순서대로 주어집니다. 각 명령은 세 정수 (r,c,k)(r, c, k)로 이루어지며 다음을 의미합니다.

좌상단 모서리가 rr행 cc열에 있는 k×kk \times k 정사각형의 테두리(perimeter) 에 있는 사람들을 시계 방향으로 한 칸 회전시킨다.

예를 들어, 명령 (1,1,2)(1, 1, 2)는 처음 격자를 다음과 같이 바꿉니다.

5 1 3 4
6 2 7 8
9 10 11 12
13 14 15 16

명령 (2,2,3)(2, 2, 3)은 처음 격자를 다음과 같이 바꿉니다.

1 2 3 4
5 10 6 7
9 14 11 8
13 15 16 12

명령 (1,1,4)(1, 1, 4)는 처음 격자를 다음과 같이 바꿉니다.

5 1 2 3
9 6 7 4
13 10 11 8
14 15 16 12

처음에 주어진 NN개의 명령이 있습니다. 이제 QQ번의 수정을 합니다. 각 수정은 하나의 명령을 영구적으로 다시 씁니다.

ii번째 명령을 (r′,c′,k′)(r', c', k')로 바꾼다.

모든 수정은 누적적이며 영구적입니다. 즉, 이전 수정들이 이미 바꿔 놓은 명령 목록을 그대로 이어받아 수정합니다. 각 수정이 끝날 때마다, (지금까지의 모든 수정이 반영된) NN개의 명령을 처음 격자에 순서대로 모두 적용했을 때의 대형을 출력하세요.

입력

첫 줄에 명령의 수 NN과 수정의 수 QQ가 주어집니다 (1≤N,Q≤1000001 \le N, Q \le 100000).

다음 NN개의 줄에는 각각 세 정수 rr, cc, kk가 주어져 하나의 회전 명령을 나타냅니다. 이때 1≤k≤41 \le k \le 4, r+k−1≤4r + k - 1 \le 4, c+k−1≤4c + k - 1 \le 4을 만족합니다.

다음 QQ개의 줄에는 각각 네 정수 ii, r′r', c′c', k′k'가 주어집니다. ii는 바꿀 명령의 11-기반 인덱스이고, 그 뒤의 (r′,c′,k′)(r', c', k')는 새로운 명령입니다 (r′r', c′c', k′k'도 위와 같은 제약을 만족합니다).

출력

각 수정마다, 지금까지의 모든 수정을 적용한 뒤의 최종 4×44 \times 4 대형을, 공백으로 구분된 네 정수씩 44줄로 출력하세요. QQ번의 수정에 대한 출력 블록을 사이에 빈 줄 없이 이어서 출력합니다.

참고

  • 각 수정은 명령 목록을 제자리에서(in place) 바꾸며, 그 변경은 누적됩니다. 즉 jj번째 수정은 1…j−11 \ldots j-1번째 수정 위에 적용됩니다.
  • k=1k = 1인 명령은 한 칸만을 대상으로 하므로 대형을 전혀 바꾸지 않습니다.
  • 각 수정 후의 답은 유일하게 결정되므로, 출력은 정확히 일치해야 합니다.

예제2

  1. 예제 1

    입력
    2 4
    1 1 1
    1 1 1
    1 1 1 2
    2 2 2 3
    1 1 1 1
    2 1 1 4
    
    예상 출력
    5 1 3 4
    6 2 7 8
    9 10 11 12
    13 14 15 16
    5 1 3 4
    6 10 2 7
    9 14 11 8
    13 15 16 12
    1 2 3 4
    5 10 6 7
    9 14 11 8
    13 15 16 12
    5 1 2 3
    9 6 7 4
    13 10 11 8
    14 15 16 12
    
  2. 예제 2

    입력
    3 2
    1 1 2
    2 2 2
    3 3 2
    2 1 1 3
    1 1 1 1
    
    예상 출력
    6 5 1 4
    9 2 3 8
    10 11 15 7
    13 14 16 12
    5 1 2 4
    9 6 3 8
    10 11 15 7
    13 14 16 12