만드는 중입니다

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

이차원 구간 합 구하기

면접 대비

시간 제한1초메모리 제한256 MB

요약
N by N 표에서 주어진 직사각형 영역의 합을 2차원 누적합으로 질의마다 구합니다.
난이도

보통10점 중 4점

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

문제

N×NN \times N개의 수가 N×NN \times N 크기의 표에 채워져 있다. (x1,y1)(x_1, y_1)부터 (x2,y2)(x_2, y_2)까지의 합을 구하는 프로그램을 작성하시오. (x,y)(x, y)는 xx행 yy열을 뜻한다.

예를 들어 N=4N = 4이고 표가 아래와 같이 채워져 있는 경우를 살펴보자.

1234
2345
3456
4567

여기서 (2,2)(2, 2)부터 (3,4)(3, 4)까지의 합은 3+4+5+4+5+6=273+4+5+4+5+6 = 27이고, (4,4)(4, 4)부터 (4,4)(4, 4)까지의 합은 77이다.

표에 채워진 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오.

입력

첫째 줄에 표의 크기 NN과 합을 구해야 하는 횟수 MM이 주어진다. (1≤N≤10241 \le N \le 1024, 1≤M≤1000001 \le M \le 100000)

둘째 줄부터 NN개의 줄에 표에 채워진 수가 1행부터 차례대로 주어진다. 각 줄에는 그 행의 수 NN개가 1열부터 차례대로 주어진다. 표에 채워진 수는 1,000보다 작거나 같은 자연수이다.

다음 MM개의 줄에는 네 정수 x1x_1, y1y_1, x2x_2, y2y_2가 주어진다. (1≤x1≤x2≤N1 \le x_1 \le x_2 \le N, 1≤y1≤y2≤N1 \le y_1 \le y_2 \le N)

출력

총 MM개의 줄에 걸쳐 (x1,y1)(x_1, y_1)부터 (x2,y2)(x_2, y_2)까지의 합을 입력 순서대로 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    4 3
    1 2 3 4
    2 3 4 5
    3 4 5 6
    4 5 6 7
    2 2 3 4
    3 4 3 4
    1 1 4 4
    
    예상 출력
    27
    6
    64
    
  2. 예제 2

    입력
    2 4
    1 2
    3 4
    1 1 1 1
    1 2 1 2
    2 1 2 1
    2 2 2 2
    
    예상 출력
    1
    2
    3
    4