1 ≤ N ≤ 100,000
1 ≤ M ≤ 100,000리스트의 길이(N)가 최대 100,000 , 구간합 구하는 명령(M)이 최대 100,000 이므로 완전 탐색을 이용하면 시간초과가 발생하기 때문에 미리 누적합을 구해 [i,j] 구간에 있는 리스트의 값을 더하여 문제를 해결한다.
import sys
N, M = map(int, sys.stdin.readline().split())
num = list(map(int, sys.stdin.readline().split()))
i = 0
while i < M:
start, end = map(int, sys.stdin.readline().split())
print(sum(num[:end]) - sum(num[:start-1]))
i += 1
import sys
from itertools import accumulate
N, M = map(int, sys.stdin.readline().split())
num = list(map(int, sys.stdin.readline().split()))
num = list(accumulate(num))
num.append(0)
i = 0
while i < M:
start, end = map(int, sys.stdin.readline().split())
print(num[end - 1] - num[start - 2])
i += 1
n = int(input())
num = list(map(int, input().split()))
num_acc = [0]
i = 0
while i < n:
num_acc.append(num_acc[-1] + num[i])
i += 1