#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, int>

struct Fenwick {
    int n;
    vector<ll> t;
    Fenwick(int n_) {
        n = n_; t.assign(n + 1, 0);
    }
    void change(int u, ll x) {
        for (; u <= n; u += u & -u) t[u] += x;
    }
    ll sum(int u) {
        ll sum = 0;
        for (; u; u -= u & -u) sum += t[u];
        return sum;
    }
    ll sum(int l, int r) {
        return sum(r) - sum(l - 1);
    }
};

void solve() {
    int n, m;
    cin >> n >> m;

    Fenwick t1(n + 1), t2(n + 1);

    auto add1 = [&] (int r, ll v) {
        if (r == 0) return;
        t1.change(r, v);
        t2.change(r, v * r);
    };
    auto add = [&] (int l, int r, ll v) {
        add1(r, v);
        add1(l - 1, -v);
    };
    for (int i = 1; i <= n; i++) {
        int x; cin >> x;
        add(i, i, x);
    }

    auto query = [&] (int u) {
        return t2.sum(1, u) + t1.sum(u + 1, n) * u;
    };
    while (m--) {
        char o; int x, y;
        cin >> o >> x >> y;
        if (o == 'Q') {
            cout << query(y) - query(x - 1) << '\n';
        } else {
            int v;
            cin >> v;
            add(x, y, v);
        }
    }
}
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    // cout << powl(1 - 1 / 1e9, 3e7) << '\n';
    int t = 1;
    while (t--)
        solve();
    return 0;
}
/*
g++ -std=c++20 1.cpp -o 1 && 1 < in.txt > out.txt
*/

0 条评论

目前还没有评论...

信息

ID
506
时间
ms
内存
MiB
难度
6
标签
递交数
59
已通过
20
上传者