블록 월드
문제
X * Y * Z 크기의 3차원 공간이 있다. 각 칸은 좌표 (x, y, z)로 구분되며, 처음에는 모두 비어 있다.
좌표 범위는 다음과 같다.
0 <= x < X
0 <= y < Y
0 <= z < Z
이 공간에 블록을 놓고, 빼고, 확인하는 명령 Q개가 순서대로 주어진다.
PLACE x y z t : (x, y, z) 칸에 종류가 t인 블록을 놓는다. 이미 블록이 있으면 덮어쓴다.
REMOVE x y z : (x, y, z) 칸의 블록을 없앤다. 즉, 빈 칸으로 만든다.
AT x y z : (x, y, z) 칸에 있는 블록의 종류를 출력한다. 비어 있으면 0을 출력한다.
COUNT z : 높이가 z인 층에 놓여 있는 블록의 개수를 출력한다.
높이가 z인 층은 z를 고정한 X * Y 평면이다.
블록의 종류 t는 1 이상의 정수다. 빈 칸은 블록 종류가 0인 것으로 생각할 수 있다.
명령은 입력 순서대로 처리한다.
입력
첫 줄에 X Y Z Q가 주어진다. 다음 Q개의 줄에 명령이 하나씩 주어진다.
X Y Z Q
command
...
출력
AT, COUNT 명령마다 결과를 한 줄씩 출력한다.
제한
1 <= X, Y, Z <= 20
1 <= Q <= 1000
1 <= t <= 1000000
명령의 좌표는 항상 공간 안에 있다.
COUNT의 z는 0 <= z < Z이다.
예제 입력
2 2 2 9
PLACE 0 0 0 5
PLACE 1 0 0 3
AT 0 0 0
COUNT 0
PLACE 1 1 1 7
COUNT 1
REMOVE 0 0 0
AT 0 0 0
COUNT 0
예제 출력
5
2
1
0
1
설명
명령을 순서대로 수행하면 다음과 같다.
PLACE 0 0 0 5 -> (0,0,0)에 5
PLACE 1 0 0 3 -> (1,0,0)에 3
AT 0 0 0 -> 5
COUNT 0 -> z=0 층의 블록: (0,0,0)=5, (1,0,0)=3 -> 2
PLACE 1 1 1 7 -> (1,1,1)에 7
COUNT 1 -> z=1 층의 블록: (1,1,1)=7 -> 1
REMOVE 0 0 0 -> (0,0,0) 비움
AT 0 0 0 -> 0
COUNT 0 -> z=0 층에 남은 블록: (1,0,0)=3 -> 1
코멘트