본문 바로가기

백준/C++

[C++] 백준 11659번 - 구간 합 구하기 4

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