누적합
나열된 수의 구간 합을 빠르게 구하는 알고리즘

풀어볼 문제
Last updated
나열된 수의 구간 합을 빠르게 구하는 알고리즘

Last updated
import sys
input=sys.stdin.readline
n,m=map(int,input().split())
arr = [*map(int,input().split())]
for i in range(m):
l, r=map(int,input().split())
ans=0
for j in range(l-1,r):
ans+=arr[j]
print(ans)#누적합
#완전탐색은 O(NM)인데 누적합은 O(N+M)이다
import sys
input=sys.stdin.readline
n,m=map(int,input().split())
arr = [*map(int,input().split())]
psum=[0]*(n+1)
for i in range(1,n+1):
psum[i]=psum[i-1]+arr[i-1]
for i in range(m):
l, r=map(int,input().split())
print(psum[r]-psum[l-1])N,M=map(int,input().split())
A=[list(map(int,input().split())) for _ in range(N)]
prefix_sum=[[0 for i in range(0,M+1)] for _ in range(N+1)]
for i in range(1, N+1):
for j in range(1, M+1):
prefix_sum[i][j]=prefix_sum[i][j-1]+prefix_sum[i-1][j]
-prefix_sum[i-1][j-1]+A[i-1][j-1]
for _ in range(int(input())):
i, j, x, y =map(int,input().split())
print(prefix_sum[x][y]-prefix_sum[x][j-1]-prefix_sum[i-1][y]+prefix_sum[i-1][j-1])