1 base玩家的福音

a数组表示原来的数据,b[i]表示[0, i]的a数组的和。使用一个循环维护既可

那么[l, r]的和就是b[r] - b[l - 1];

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, q;
    cin >> n >> q;
    vector<long long> a(n + 1);
    for (int i = 0; i < n; i++) {
        cin >> a[i + 1];
    }
    vector<long long> b(n + 1);
    for (int i = 1; i <= n; i++) {
        b[i] = b[i - 1] + a[i];
    }
    for (int i = 0; i < q; i++) {
        int l, r;
        cin >> l >> r;
        cout << b[r] - b[l - 1] << '\n';
    }
}
// 64 位输出请用 printf("%lld")