2차원 배열의 누적합을 구하고 배열의 일 부분의 누적합을 구하는 문제이다.
이전에 풀었던 문제와 상당히 비슷한 구조
N, M = map(int, input().split())
prefix_sum = [[0] * (M + 1) for _ in range(N+1)]
for i in range(1, N+1):
row = list(map(int, input().split()));
for j in range(1, M+1):
prefix_sum[i][j] = prefix_sum[i][j - 1] + row[j-1] + prefix_sum[i-1][j] - prefix_sum[i-1][j-1]
K = int(input())
answer = []
for _ in range(K):
i, j, x, y = map(int, input().split())
part_sum = prefix_sum[x][y] - prefix_sum[i-1][y] - prefix_sum[x][j-1] + prefix_sum[i-1][j-1]
answer.append(part_sum)
for n in answer:
print(n)