정육면체의 겉넓이

면접 대비

시간 제한5초메모리 제한512 MB

요약
한 모서리 길이가 A, B, C인 직육면체 단위 큐브 묶음에서 N개 큐브를 뺄 때 남은 물체의 전체 겉넓이를 구합니다. 빈칸 안쪽 벽면도 모두 포함합니다.
난이도

보통10점 중 5점

유형
해시맵, 수학, 구현, 기하
정답자
아직 제출이 없습니다

문제

타로는 싱글 플레이어 게임 "Surface Area of Cubes"를 좋아한다.

이 게임에서 타로는 처음에 A×B×CA \times B \times C개의 단위 정육면체(모두 1×1×11 \times 1 \times 1 크기)로 이루어진 A×B×CA \times B \times C 직육면체를 가지고 있다. 각 단위 정육면체의 중심은 3차원 좌표 (x,y,z)(x,y,z)에 놓여 있으며, x,y,zx,y,z는 모두 정수이고 (0≤x≤A−1,0≤y≤B−1,0≤z≤C−1)(0\leq x\leq A-1, 0\leq y\leq B-1, 0\leq z\leq C-1)이다. 그 다음 게임 마스터가 서로 다른 NN개의 단위 정육면체를 직육면체에서 제거한다. NN개의 정육면체가 제거된 후, 타로는 이 물체의 총 겉넓이를 정확히 말해야 게임에서 이길 수 있다.

제거 연산은 제거되지 않은 정육면체의 위치를 바꾸지 않는다. 직육면체의 표면에 있는 정육면체뿐 아니라 내부에 있는 정육면체도 제거될 수 있다. 또한 정육면체가 제거되면 물체가 여러 부분으로 나뉠 수 있다. 게임 플레이어는 외부에서 접근할 수 없는 겉넓이도 모두 세야 한다.

타로는 몇 개의 정육면체가 제거되었는지, 어떤 정육면체가 제거되었는지는 알지만 이 게임이 너무 어려워서 반칙으로 이기고 싶어 한다! 당신은 타로의 친구이며, 직육면체의 크기와 제거된 정육면체의 좌표가 주어졌을 때 타로를 대신해 물체의 총 겉넓이를 계산하는 프로그램을 작성해야 한다.

입력

입력은 다음과 같이 주어진다.

각 테스트 케이스의 첫째 줄에는 네 정수 A,B,CA,B,C와 NN이 주어진다. (1≤A,B,C≤108,0≤N≤min⁡{1,000,A×B×C−1}).(1\leq A,B,C\leq 10^8,0\leq N\leq \min \{1{,}000, A\times B\times C-1 \} ).

다음 NN개의 줄 각각에는 제거된 정육면체의 좌표를 나타내는 음이 아닌 정수 x,y,zx,y,z가 주어진다. 이 좌표들은 서로 다르다고 가정할 수 있다.

출력

NN개의 정육면체가 제거된 물체의 총 겉넓이를 출력한다.

예제3

  1. 예제 1

    입력
    2 2 2 1
    0 0 0
    
    예상 출력
    24
    
  2. 예제 2

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

    입력
    3 3 3 1
    1 1 1
    
    예상 출력
    60