아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

낚시

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

요약
각 질의 (a,b)마다 b열의 1행부터 a행까지의 물고기 수와, (1,1) 방향 대각선을 격자 밖으로 나갈 때까지 더한 값을 구한다.
난이도

보통10점 중 4점

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

문제

건덕이는 일감호에 딸린 작은 섬, 와우도에 앉아 세월을 낚아 올리는 중이다.

일감호는 N×MN\times M 공간으로 나타낼 수 있다. 공간은 1×11\times 1 크기의 정사각형 칸으로 나누어져 있고, 각 칸에는 물고기가 여럿 존재한다. 가장 수심이 깊으면서 건덕이로부터 가장 먼 칸은 (N,M)\left( N,M \right)이다.

건덕이는 낚싯대를 휘둘러 원하는 칸에 미끼를 던질 수 있다. 무게가 aa인 무게추를 매달아 bb만큼의 힘으로 낚싯대를 휘두르면 (a,b)\left( a,b \right) 칸에 미끼가 존재하게 된다.

미끼는 일감호 공간 안에서 물고기들을 사로잡는데, 그 대상은 미끼가 속한 칸으로부터 수면까지 존재하는 모든 칸에 있는 물고기들이다. 즉, (a,b)\left( a,b \right)에 존재하는 미끼는 1≤i≤a1\leq i\leq a인 모든 정수 ii에 대해서 (i,b)\left( i,b \right)에 존재하는 모든 물고기를 사로잡는다.

건덕이가 낚싯줄을 한 바퀴 감아올리면, (a,b)\left( a,b \right)에 위치한 미끼는 (a−1,b−1)\left( a-1,b-1 \right)로 이동하며, 이동한 위치에서 물고기를 사로잡는다. 미끼가 일감호의 공간을 벗어나면 즉시 회수된다.

건덕이가 무게추의 무게와 낚싯대를 휘두를 힘을 알려줄 때마다, 낚싯대를 휘두른 뒤 회수할 때까지 낚싯줄을 감아올리면 몇 마리의 물고기가 사로잡힐지 구해줘야 한다. 건덕이가 많은 물고기를 잡을 수 있도록 도와주자!

입력

첫째 줄에 일감호의 크기를 나타내는 정수 N,MN,M과 건덕이가 낚싯대를 휘두를 횟수 QQ가 공백으로 구분되어 주어진다. (1≤N,M≤2,000; 1≤Q≤300,000)\left( 1\leq N,M\leq 2\\, 000;\ 1\leq Q\leq 300\\, 000 \right)

둘째 줄부터 NN개의 줄에 걸쳐 각 공간에 존재하는 물고기의 수 A_ijA\_{ij}가 주어진다. NN개의 줄 중 ii번째 줄에 있는 jj번째 수는 (i,j)(i,j) 칸에 물고기가 A_ijA\_{ij}마리 존재한다는 의미다. (0≤A_ij≤500)\left( 0\leq A\_{ij}\leq 500 \right)

N+2N+2번째 줄부터 QQ개의 줄에 걸쳐 건덕이가 미끼에 매달 무게추의 무게를 나타내는 정수 W_iW\_i와 낚싯대를 휘두르는 힘을 나타내는 정수 P_iP\_i가 공백으로 구분되어 주어진다. (1≤W_i≤N; 1≤P_i≤M)\left( 1\leq W\_i\leq N;\ 1\leq P\_i\leq M \right)

출력

QQ개의 줄에 걸쳐, 각 낚시에 대해서 미끼를 회수할 때까지 몇 마리의 물고기가 사로잡히는지 출력한다.

힌트

입출력의 양이 많으므로, 빠른 입출력을 사용하는 것을 권장합니다. 대표적인 언어에 따른 빠른 입출력은 아래를 참고하세요.

  • C++: cin, cout을 사용하는 경우 입출력 전에 cin.tie(nullptr); ios::sync_with_stdio(false);를 한 번 적용해야 합니다. 줄 바꿈할 때는 endl 대신 '\n'을 사용해야 합니다.
  • Java: BufferedReader와 BufferedWriter를 사용해야 합니다.
  • Python3, PyPy3: input() 대신 sys.stdin.readline().rstrip()을 사용해야 합니다.

예제1

  1. 예제 1

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