728x90
문제 11659번
https://www.acmicpc.net/problem/11659
푸는데 테스트했을때는 맞게 출력되지만, 제출해보면 자꾸 시간 초과나고 틀리고 그래서 찾아보았다. 보니까 dp로 푸는 거라고 한다. 누적 합을 저장하고 누적 합 배열에서 구간 배열에 해당되는 값을 구하기 위해 빼주면 된다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, m;
cin >> n >> m;
vector<long> num(n + 1);
num[0] = 0;
for (int i = 1; i <= n; i++) {
long a;
cin >> a;
num[i] = num[i - 1] + a;
}
for (int i = 0; i < m; i++) {
int k, l;
cin >> k >> l;
cout << num[l] - num[k - 1] << '\n';
}
return 0;
}
728x90
'백준 > C++' 카테고리의 다른 글
[C++] 백준 2163번 - 초콜릿 자르기 (1) | 2024.07.22 |
---|---|
[C++] 백준 1247번 - 부호 (1) | 2024.07.20 |
[C++] 백준 32025번 - 체육은 수학과목 입니다 (0) | 2024.07.18 |
[C++] 백준 1075번 - 나누기 (0) | 2024.07.18 |
[C++] 백준 9063번 - 대지 (0) | 2024.07.16 |