이차원 구간 합 구하기

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

보통4누적 합행렬면접 대비아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

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

예를 들어 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이 주어진다. (1N10241 \le N \le 1024, 1M1000001 \le M \le 100000)

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

다음 MM개의 줄에는 네 정수 x1x_1, y1y_1, x2x_2, y2y_2가 주어진다. (1x1x2N1 \le x_1 \le x_2 \le N, 1y1y2N1 \le y_1 \le y_2 \le N)

출력

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