아름다운 제도

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

요약
최대 1000x1000 격자와 10만 개의 질의에서, 해수면이 오른 뒤 생긴 섬들 중 평행이동으로 같은 모양이 되는 섬 쌍의 개수를 각 질의마다 구하는 문제입니다.
난이도

어려움10점 중 9점

유형
유니온 파인드, 해시맵, 동적 계획법
정답자
아직 제출이 없습니다

문제

어떤 나라는 많은 섬으로 이루어져 있다. 그 섬들 중에는 같은 모양을 가진 섬도 있다. 한 섬을 평행이동해서 다른 섬과 완전히 일치시킬 수 있다면 두 섬은 같은 모양이라고 한다. 회전하거나 뒤집는 것은 허용하지 않는다. 이 나라의 아름다움은 같은 모양을 가진 섬의 순서 없는 쌍의 개수이다.

하지만 해수면이 매년 상승하기 때문에, 이 아름다움도 시간이 지나며 달라진다.

이 나라의 지도는 R x C개의 정사각형 칸으로 나타낸다. 지도를 만든 시점의 해수면은 0이고, 각 칸에는 음이 아닌 정수 높이가 있다. 해수면은 1년에 1씩 상승한다. T년이 지난 뒤에는 높이가 T보다 큰 칸만 땅으로 남고, 높이가 T 이하인 칸은 섬의 내부에 있더라도 모두 물에 잠긴다. 두 땅 칸이 같은 섬에 포함되려면, 한 칸에서 시작해 위, 아래, 왼쪽, 오른쪽으로 인접한 땅 칸만 지나 다른 칸에 도착할 수 있어야 한다.

초기 상태5년 후

각 조사 연도 T가 주어질 때, T년이 지난 뒤 이 나라의 아름다움을 구하라.

입력

첫째 줄에 지도의 크기 R과 C가 주어진다 (3 <= R, C <= 1000).

다음 R개 줄에는 각 줄마다 C개의 음이 아닌 정수가 공백으로 구분되어 주어진다. 각 값은 10^9 이하이며, 지도를 만든 시점에서 그 칸의 높이를 나타낸다.

다음 줄에는 조사하려는 연도의 수 Q가 주어진다 (1 <= Q <= 100000).

다음 줄에는 Q개의 자연수가 오름차순으로 주어진다. 각 값은 10^9 이하이다.

출력

총 Q개의 줄에 걸쳐, 각 조사 연도만큼 시간이 지난 뒤 나라의 아름다움을 출력한다.

예제2

  1. 예제 1

    입력
    5 6
    100 2 3 4 5 6 
    20 4 45 12 3 4 
    0 0 1 2 3 0 
    0 0 0 0 0 0
    0 0 1 2 3 0
    3
    1 4 10
    
    예상 출력
    0
    1
    0
    
  2. 예제 2

    입력
    7 6
    5 8 0 9 7 6
    7 0 0 9 2 6
    8 0 6 7 9 7
    0 0 8 7 0 0
    0 5 0 0 3 2
    0 9 0 0 6 0
    8 1 0 0 7 0
    1
    5
    
    예상 출력
    4