728x90
반응형
https://www.acmicpc.net/problem/11659
문제
수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.
출력
총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.
제한
- 1 ≤ N ≤ 100,000
- 1 ≤ M ≤ 100,000
- 1 ≤ i ≤ j ≤ N
단순하게 정해진 구간 내 모든 값들을 더해서 출력하려고 하면 시간초과가 나는 문제이다.
누적 합을 구해 그 범위 내 더한 값만 출력해주면 된다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<iostream>
#include <vector>
#include <queue>
#include <deque>
using namespace std;
int N,M;
int arr[100003];
int sum[100003];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N >> M;
int total = 0;
for (int i = 1; i <= N; i++) {
cin >> arr[i];
total += arr[i];
sum[i] = total;
}
for (int i = 1; i <= M; i++) {
int start, end;
cin >> start >> end;
cout << sum[end] - sum[start - 1] << '\n';
}
return 0;
}
728x90
반응형
'BOJ > 시물레이션' 카테고리의 다른 글
[C/C++] 백준 - 17281번 (시물레이션, 조합) (0) | 2021.07.07 |
---|---|
[C/C++] 백준 - 17135번 (캐슬 디펜스) (0) | 2021.07.01 |
[C/C++] 백준 - 19238번 (스타트 택시 - 시물레이션/BFS) (0) | 2021.06.28 |
[C/C++] 백준 - 17140번 (시물레이션) (0) | 2021.06.21 |
[C/C++] 백준 - 16236번 (아기 상어) (0) | 2021.06.17 |