만드는 중입니다

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

정사각형과 쿼리

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

요약
각 질의마다 주어진 좌상단에서 한 변의 길이가 K인 정사각형 안의 칸을 지운 뒤, 격자에 남아 있는 서로 다른 값의 개수를 구합니다.
난이도

보통10점 중 6점

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

문제

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

정수 KK와 QQ개의 쿼리가 주어진다. 각 쿼리는 좌표 (y,x)(y, x)를 준다. 이는 왼쪽 위 칸이 (y,x)(y, x)이고 한 변의 길이가 KK인 정사각형을 뜻한다. 각 쿼리마다 주어진 정사각형 안의 칸에 적힌 수를 모두 지웠을 때, 나머지 격자 칸에 존재하는 서로 다른 수의 개수를 구하여라.

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

입력

첫 번째 줄에 HH, WW, KK, QQ가 주어진다. (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개의 정수 AijA_{ij}가 공백으로 구분되어 주어진다. (1≤Aij≤H×W1 \le A_{ij} \le H \times W)

이후 QQ개의 줄에는 정수 yy와 xx가 주어진다. (y,x)(y, x)는 정사각형의 왼쪽 위 칸의 좌표이다. (1≤y≤H−K+11 \le y \le H - K + 1, 1≤x≤W−K+11 \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