만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

큐브

시간 제한1.5초메모리 제한1024 MB

요약
N x N x N 정육면체의 칸 색을 바꾸고, 지정한 면을 앞으로 돌렸을 때 각 칸에서 처음 보이는 색을 출력합니다.
난이도

보통10점 중 5점

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

문제

N×N×NN \times N \times N개의 단위 큐브로 이루어진 크기 NN의 큐브를 떠올려 보자. 각 단위 큐브는 처음에 색이 없어서 투명하며, 그 너머가 보인다. 요청에 따라 각 단위 큐브의 색은 시간이 지나면서 바뀔 수 있다.

큐브는 유리로 된 회전 받침대 위에 놓여 있다. 큐브에는 앞면, 뒷면, 왼쪽 면, 오른쪽 면, 윗면, 아랫면이 있다. 처음에는 앞면이 눈높이에서 나를 향해 있다. 투명한 단위 큐브를 통과해 보면 처음으로 색이 있는 단위 큐브까지 보인다.

QQ개의 질의가 주어진다. ii번째 질의는 다음 두 형태 중 하나이다.

  • 1 X_i Y_i Z_i C_i: 위에서 아래로 세어 XiX_i행, 왼쪽에서 오른쪽으로 세어 YiY_i열, 앞에서 뒤로 세어 깊이 ZiZ_i에 있는 단위 큐브의 색을 CiC_i로 바꾼다. 이때 큐브는 처음 방향이며 앞면이 나를 향해 있다.
  • 2 S_i: 면 SiS_i가 앞면(눈앞)에 오도록 큐브를 회전한 뒤, 지금 보이는 색의 N×NN \times N 표를 출력한다. 어떤 칸이 큐브를 끝까지 투과해 보인다면 그 칸에는 00을 출력한다. 그다음 큐브를 처음 위치로 되돌려 앞면이 다시 나를 향하게 한다.

입력

첫 줄에 자연수 NN과 QQ가 주어진다 (2≤N≤1002 \le N \le 100, 1≤Q≤2 0001 \le Q \le 2\,000).

이어지는 QQ개의 줄에 첫 번째 종류 또는 두 번째 종류의 질의가 하나씩 주어진다.

  • 질의의 첫 번째 수가 1이면 이어서 자연수 XiX_i, YiY_i, ZiZ_i, CiC_i가 주어진다 (1≤Xi≤N1 \le X_i \le N, 1≤Yi≤N1 \le Y_i \le N, 1≤Zi≤N1 \le Z_i \le N, 1≤Ci≤1 000 000 0001 \le C_i \le 1\,000\,000\,000).
  • 질의의 첫 번째 수가 2이면 이어서 문자열 SiS_i가 주어진다. SiS_i는 prednja, straznja, lijeva, desna 중 하나이며, 앞면으로 회전시킬 면을 나타낸다.

출력

두 번째 종류의 질의마다 그 답으로 N×NN \times N 표를 출력한다.

힌트

첫 번째 예제에서 2×2×22 \times 2 \times 2 큐브의 단위 큐브는 모두 색이 없다. 첫 질의는 앞면을 묻는다. 앞면은 이미 나를 향해 있으므로 회전이 필요 없다. 큐브가 완전히 투명하므로 답은 0으로 채워진 2×22 \times 2 표이다.

다음 두 질의로 앞-위-왼쪽 모서리의 단위 큐브를 색 11로, 뒤-아래-오른쪽 모서리의 단위 큐브를 색 55로 바꾼다. 그다음 두 질의는 뒷면을 앞으로 가져왔을 때와 오른쪽 면을 앞으로 가져왔을 때의 모습을 묻는다. 첫 번째 경우 색 11인 큐브는 오른쪽 위 모서리에, 색 55인 큐브는 왼쪽 아래 모서리에 놓인다. 두 번째 경우는 앞에서 본 것과 같다.

두 번째 예제에서는 3×3×33 \times 3 \times 3 큐브의 2행, 깊이 2에 있는 단위 큐브들의 색을 바꾼다. 왼쪽에서 보면 색 11인 큐브만 보이고, 오른쪽에서 보면 색 33인 큐브만 보인다.

예제3

  1. 예제 1

    입력
    2 5
    2 prednja
    1 1 1 1 1
    1 2 2 2 5
    2 straznja
    2 desna
    
    예상 출력
    0 0
    0 0
    0 1
    5 0
    1 0
    0 5
    
  2. 예제 2

    입력
    3 5
    1 2 1 2 1
    1 2 2 2 2
    1 2 3 2 3
    2 lijeva
    2 desna
    
    예상 출력
    0 0 0
    0 1 0
    0 0 0
    0 0 0
    0 3 0
    0 0 0
    
  3. 예제 3

    입력
    2 6
    1 2 1 2 1
    1 1 1 1 3
    1 2 1 2 2
    1 1 1 2 4
    2 prednja
    2 straznja
    
    예상 출력
    3 0
    2 0
    0 4
    0 2