- 전부 더하면 시간초과가 날 것이 뻔하기 때문에, 양쪽 인덱스가 들어올 때 해당 인덱스까지의 누적합의 차로 구해준다.
- ios_base::sync_with_stdio 로 끊어줘도 iostream 쓰면 시간초과가 나니 그냥 stdio 입출력 함수 쓸 것.
#include <stdio.h>
int N, M, temp;
int l, r;
int cumsum[100001];
int main(void)
{
scanf("%d %d", &N, &M);
for(int i = 1 ; i <= N ; i++)
{
scanf("%d", &temp);
cumsum[i] = cumsum[i-1] + temp; // i 까지의 누적합을 저장
}
for(int i = 0 ; i < M ; i++)
{
scanf("%d %d", &l, &r);
printf("%d\n", cumsum[r] - cumsum[l-1]); // l 과 r 구간의 합은 r 까지 누적합 - l 전까지의 누적합
}
}
'PS > BOJ' 카테고리의 다른 글
[백준] 10830 : 행렬 제곱 (0) | 2021.05.02 |
---|---|
[백준] 16928 : 뱀과 사다리 게임 (0) | 2021.05.01 |
[백준] 1707 : 이분 그래프 (0) | 2021.04.13 |
[백준] 2583 : 영역 구하기 (0) | 2021.04.12 |
[백준] 14938 : 서강그라운드 (0) | 2021.04.10 |