NรN๊ฐ์ ์๊ฐ NรN ํฌ๊ธฐ์ ํ์ ์ฑ์์ ธ ์๋ค. (x1, y1)๋ถํฐ (x2, y2)๊น์ง ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. (x, y)๋ xํ y์ด์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด, N = 4์ด๊ณ , ํ๊ฐ ์๋์ ๊ฐ์ด ์ฑ์์ ธ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
์ฌ๊ธฐ์ (2, 2)๋ถํฐ (3, 4)๊น์ง ํฉ์ ๊ตฌํ๋ฉด 3+4+5+4+5+6 = 27์ด๊ณ , (4, 4)๋ถํฐ (4, 4)๊น์ง ํฉ์ ๊ตฌํ๋ฉด 7์ด๋ค.
ํ์ ์ฑ์์ ธ ์๋ ์์ ํฉ์ ๊ตฌํ๋ ์ฐ์ฐ์ด ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
# ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5
import sys
input = sys.stdin.readline
# ๋ชจ๋ input์ ๋ํ ๊ฐ์ ๋น ๋ฅด๊ฒ ์
๋ ฅ ๋ฐ๋๋ค.
N,M = map(int,input().split())
# ๋ฐฐ์ด์ ํฌ๊ธฐ N,๋ฆฌ์คํธ๋ฅผ ๊ตฌํด์ผ ํ๋ ํ์ M
# ๋ฐฐ์ด ์
๋ ฅ๋ฐ๊ธฐ
arr = [[0]*(N+1)]
for i in range(0,N):
row = [0] + [int(x) for x in input().split()]
arr.append(row)
# ํฉ ๋ฐฐ์ด์ ๊ตฌํ๊ธฐ
arrSum = [[0]*(N+1) for _ in range(N+1)]
for i in range(1,N+1):
for j in range(1,N+1):
arrSum[i][j] = arrSum[i][j - 1] + arrSum[i - 1][j] - arrSum[i - 1][j - 1] + arr[i][j]
ans = 0
#์ขํ์ ๋ง๋ ๊ฐ์ ์ฐพ์์ ๋ต์ ์ถ๋ ฅํ๊ธฐ
for _ in range(M): #ํ
์คํธ ์ผ์ด์ค๋งํผ
#์ฒ์ ์ขํ์์ ์์ํด์
x1,y1,x2,y2 = map(int,input().split())
ans = arrSum[x2][y2]-arrSum[x1-1][y2]-arrSum[x2][y1-1]+arrSum[x1-1][y1-1]
print(ans)
์ง์์ ๊ฐ์๊ฐ 100,000๊ฐ ์ด๋ฏ๋ก ํฉ๋ฐฐ์ด์ ๊ตฌํ์ฌ ํ์ด์ผ ํ๋ค๋ ์ ์ ์ ์ ์๋ค.
ํฉ๋ฐฐ์ด์ ๊ธฐ๋ณธ ์์ด๋์ด๋ ์ ์ฒดํฉ๋ฐฐ์ด(ํฐ๋ถ๋ถ) - ๋นผ์ผํ ๋ถ๋ถ(์์๋ถ๋ถ)์ด๋ค.
์ด์ฐจ์ ๋ฆฌ์คํธ์ ํฉ๋ฐฐ์ด์ ๊ตฌํ๊ธฐ ์ํด์ ์ขํ๋ฅผ ๊ฐ๊ฐ ์ ๋ ฅ๋ฐ์์ ๋นผ์ผํ ๋ถ๋ถ๋ง ๋นผ์ฃผ์๋ค.
์ค๊ฐ์ ์ ์๋ฌ๊ฐ ๋์ ๊ฝค๋ ๊ณ ์ํ๋๋ฐ,, ์๊ณ ๋ณด๋ for๋ฌธ์์ ๋ณ์๋ฅผ k๋ก ์จ๋๊ณ i๋ก ์ธ๋ฑ์ฑ์ ํ ๋นํด์ค์ ๋๋ ์๋ฌ์๋ค..^^