#include <stdio.h>
#define MAX_SIZE 1000
int N, M;
int A[MAX_SIZE][MAX_SIZE];
int S[MAX_SIZE + 1][MAX_SIZE + 1]; // 추가: S[i][j] = A[0..i-1][0..j-1]의 합
int main() {
int i, j;
int r0, r1, c0, c1, sum = 0;
scanf("%d", &N);
for (i = 0; i < N; i ++) {
for (j = 0; j < N; j ++) {
scanf("%d", &A[i][j]);
}
}
// 추가: 2차원 누적합 계산 O(N^2)
for (i = 0; i < N; i ++) {
for (j = 0; j < N; j ++) {
S[i + 1][j + 1] = A[i][j] + S[i][j + 1] + S[i + 1][j] - S[i][j];
}
}
scanf("%d", &M);
for (i = 0; i < M; i ++) {
scanf("%d%d%d%d", &r0, &r1, &c0, &c1);
// TODO: compute the sub-matrix sum.
sum = S[r1][c1] - S[r0][c1] - S[r1][c0] + S[r0][c0];
printf("%d\n", sum);
}
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: