만드는 중입니다

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

Farmer John의 치즈 블록

면접 대비

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

요약
N x N x N 치즈 블록에서 단위 정육면체를 하나씩 제거할 때마다, 남은 치즈에 들어가는 1 x 1 x N 막대의 개수를 구합니다.
난이도

보통10점 중 4점

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

문제

Farmer John에게 정육면체 모양의 치즈 덩어리가 있다. 이 치즈는 3차원 좌표 평면 위에 놓여 있으며 (0,0,0)(0,0,0)부터 (N,N,N)(N, N, N)까지 뻗어 있다 (2≤N≤10002 \leq N \leq 1000). Farmer John은 이 치즈 덩어리에 QQ번 (1≤Q≤2⋅1051 \leq Q \leq 2 \cdot 10^5)의 갱신 작업을 수행한다.

각 갱신 작업마다 FJ는 정수 좌표 (x,y,z)(x, y, z)부터 (x+1,y+1,z+1)(x+1, y+1, z+1)까지 뻗은 1×1×11 \times 1 \times 1 크기의 치즈 조각을 파낸다. 여기서 0≤x,y,z<N0 \leq x, y, z < N이다. FJ가 파내는 위치에는 항상 1×1×11 \times 1 \times 1 크기의 치즈가 있다고 보장된다. FJ는 Moocraft를 하고 있으므로, 아래쪽 치즈를 파내도 중력 때문에 위의 치즈가 떨어지지 않는다.

각 갱신 후에, FJ가 1×1×N1 \times 1 \times N 크기의 막대를 치즈 덩어리에 꽂을 수 있는 서로 다른 배치의 수를 구한다. 막대의 어떤 부분도 남아 있는 치즈와 겹치면 안 된다. 막대의 모든 꼭짓점은 세 축 모두에서 [0,N][0, N] 범위의 정수 좌표를 가져야 한다. FJ는 막대를 원하는 대로 회전시킬 수 있다.

입력

첫 줄에 NN과 QQ가 주어진다.

다음 QQ개의 줄에는 파낼 좌표 xx, yy, zz가 각각 주어진다.

출력

각 갱신 후에 배치의 수를 정수 하나로 출력한다.

힌트

처음 세 번의 갱신 후, [0,1]×[0,2]×[0,1][0, 1] \times [0, 2] \times [0, 1] 범위에 걸친 1×2×11 \times 2 \times 1 막대는 남은 치즈와 겹치지 않으므로 답에 포함된다.

예제1

  1. 예제 1

    입력
    2 5
    0 0 0
    1 1 1
    0 1 0
    1 0 0
    1 1 0
    
    예상 출력
    0
    0
    1
    2
    5