Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- struct SegmentSumStructure {
- vector<int> prefixSums;
- SegmentSumStructure(const vector<int>& a) {
- int n = a.size();
- prefixSums.assign(n + 1, 0);
- for (int i = 0; i < n; i++) {
- prefixSums[i + 1] = prefixSums[i] + a[i];
- }
- }
- int findSum(int left, int right) { // [left; right)
- return prefixSums[right] - prefixSums[left];
- }
- };
- int main() {
- int n;
- cin >> n;
- vector<int> arr(n);
- for (int& val : arr) {
- cin >> val;
- }
- SegmentSumStructure myAdder(arr);
- int queriesNumber;
- cin >> queriesNumber;
- for (int i = 0; i < queriesNumber; i++) {
- int left, right;
- cin >> left >> right;
- left--;
- cout << myAdder.findSum(left, right) << '\n';
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment