블록 월드


답안 제출

Points: 50 (partial)
시간 제한: 1.0s
메모리 제한: 64M

문제 유형
허용된 언어
C

문제

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 평면이다.

블록의 종류 t1 이상의 정수다. 빈 칸은 블록 종류가 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

코멘트

현재 작성된 코멘트가 없습니다.