이 문제는 N개의 숫자들이 주어졌을 때, i부터 j까지의 수들을 구하는 문제이다. 누적합을 구해서 풀어본다. 예를들어 2번째 누적합은 1번째 수 + 2번째 수 이다. 만약 i번째 누적합은 i번째까지 구해지고 그렇다면 i번재부터 j번째 까지의 누적합은 j번재 까지의 누적합에서 i번재까지의 누적합은 j번째에서 i-1번째 까지의 누적합을 구하면된다.
가. 누적합을 구해서 i번째부터 j번째까지 구해야지.
나. 누적합을 저장할 배열을 선언해야지.
다. i번재부터 j번째이면 j번째 누적합에서 몇번째 누적합을 빼야할지를 찾아야겠지.
i번째 누적합을 빼면 되겠다고 생각하면 되겠지만 그렇지않다. i-1번째 누적합을 빼줘ㅕ야 한다.
import sys
N,M=map(int, sys.stdin.readline().split())
P=[0]*N
def set_P(arr):
P[0]=arr[0]
for i in range(1,len(arr)):
P[i]=arr[i]+P[i-1]
arr=list(map(int,sys.stdin.readline().split()))
set_P(arr)
def Get_Pre_Sum(P,i,j):
if i==0:
return P[j]
else:
return P[j]-P[i-1]
for _ in range(M):
i,j=map(int,sys.stdin.readline().split())
i-=1
j-=1
print(Get_Pre_Sum(P,i,j))