n,m = map(int,input().split())
arr = [list(map(int,input().split())) for _ in range(n)]
# 시간 초과
for _ in range(m):
sum = 0
x1,y1,x2,y2 = map(int,input().split())
for i in range(x1-1,x2):
for j in range(y1-1,y2):
sum += graph[i][j]
print(sum)
최종 위치의 구간 합 구하기 📌 우리는 빨간 영역에 위치한 구간 합을 구할 것이다 ! ( 위 배열은 누적합 그래프, 원본 배열과 헷갈리지 말것 ) → 4행 3열에 위치한 42에서, 4행 1열에 위치한 10, 2행 3열에 위치한 15를 빼주고 중복된 위치의 2행 1열에 윛한 부분을 더해주면, 빨간 영역에 위치한 구간 합을 구할 수 있다 .
import sys
input = sys.stdin.readline
n,m = map(int,input().split())
arr = [0]+[[0]+list(map(int,input().split())) for _ in range(n)]
sum_arr = [[0]*(n+1) for _ in range(n+1)]
for i in range(1,n+1):
for j in range(1,n+1):
sum_arr[i][j] = arr[i][j] + sum_arr[i-1][j] + sum_arr[i][j-1] -sum_arr[i-1][j-1]
for _ in range(m):
x1,y1,x2,y2 = map(int,input().split())
result = sum_arr[x2][y2]+sum_arr[x1-1][y1-1]-sum_arr[x1-1][y2]-sum_arr[x2][y1-1]
print(result)