정사각형과 쿼리

시간 제한4.5초메모리 제한1024 MB

요약
각 쿼리마다 K x K 정사각형을 지운 뒤 격자에 남는 서로 다른 수의 개수를 구한다.
난이도

어려움10점 중 8점

유형
누적 합, 구현, 해시맵
정답자
아직 제출이 없습니다

문제

HH개의 행과 WW개의 열로 이루어진 격자가 있다. 각 격자 칸은 (i,j)(i, j)로 나타내며, 이는 위에서부터 ii번째 행, 왼쪽에서부터 jj번째 열을 의미한다. (i,j)(i, j)에는 임의의 정수 A_ijA\_{ij}가 적혀 있으며, 이 값은 11 이상 H×WH \times W 이하이다.

정수 KK가 주어지고, QQ개의 쿼리가 주어진다. 각 쿼리마다 좌표 (y,x)(y, x)가 주어지는데, 이는 왼쪽 위 칸이 (y,x)(y, x)이고 한 변의 길이가 KK인 정사각형을 의미한다. 각 쿼리마다 주어진 정사각형에 포함된 영역의 수들을 지울 때, 나머지 격자 부분에 존재하는 서로 다른 수의 개수를 구하여라.

모든 쿼리는 독립적이다. 즉, 이전 쿼리는 다음 쿼리에 영향을 주지 않는다.

입력

첫 번째 줄에 H,W,K,QH, W, K, Q가 주어진다. (1≤H,W≤2,0001 \le H, W \le 2\\,000, 1≤K≤min⁡(H,W)1 \le K \le \min(H, W), 1≤Q≤3×1051 \le Q \le 3 \times 10^5 )

다음 HH개의 줄에는 WW개의 정수 A_ijA\_{ij}가 공백으로 구분되어 주어진다. (1≤A_ij≤H×W1 \le A\_{ij} \le H \times W )

이후에는 QQ개의 줄에 걸쳐 쿼리에 대한 정보가 주어진다. 각 줄에는 정수 yy와 xx가 주어지는데 (y,x)(y, x)는 정사각형의 왼쪽 위 칸의 좌표를 의미한다. (1≤y≤H−K+1,1≤x≤W−K+11 \le y \le H - K + 1, 1 \le x \le W - K + 1)

출력

각 쿼리마다 주어진 정사각형을 제외한 나머지 격자에 존재하는 서로 다른 수의 개수를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

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