알고리즘
백준 11441번 합 구하기 C++
영춘권의달인
2023. 4. 15. 12:07
https://www.acmicpc.net/problem/11441
11441번: 합 구하기
첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는
www.acmicpc.net
누적 합
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>
using namespace std;
using int64 = long long;
int n, m;
vector<int> v;
vector<int> accSum;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
v = vector<int>(n);
accSum = vector<int>(n, 0);
for (int i = 0; i < n; i++) cin >> v[i];
accSum[0] = v[0];
for (int i = 1; i < n; i++) {
accSum[i] = accSum[i - 1] + v[i];
}
cin >> m;
for (int i = 0; i < m; i++) {
int s, e, sum;
cin >> s >> e;
s -= 1;
e -= 1;
if (s == 0) sum = accSum[e];
else sum = accSum[e] - accSum[s - 1];
cout << sum << "\n";
}
}