불러오는 중
질의 개수가 많기 때문에 매번 처음부터 합을 더하면 시간이 모자란다. 미리 계산을 해 두는 도구가 필요하다.
누적합 배열 를 다음과 같이 정의한다.
그러면 구간 의 합은 단순한 뺄셈으로 구한다.
입력 1
8 3
3 1 4 1 5 9 2 6
3 5
0 7
2 2
출력 1
15
31
4
설명: 첫 번째 질의는 위 그림의 예와 같이 . 두 번째 질의는 전체 합으로 . 세 번째 질의는 한 칸만의 합 .
입력 2
5 4
-2 3 -1 5 4
0 4
0 0
1 3
2 4
출력 2
9
-2
7
8
이 문제는 누적합 없이 풀면 한 질의에 최악 이 들어 전체 이다. 이면 이라 시간 안에 못 푼다. 누적합을 전처리하면 전체 이다.