Cod sursa(job #2758640)

Utilizator Cosmin2004_InfoMoldoveanu Cosmin Cosmin2004_Info Data 11 iunie 2021 18:54:43
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
template <typename T> class bit {
private:
    int n;
    vector <T> t;
public:
    bit(int _n) {n = _n; t.resize(n + 1);}
    void add(int pos, T val) {
        while(pos <= n) {
            t[pos] += val;
            pos += pos & (-pos);
        }
    }
    T query(int r) {
        T sum = 0;
        while(r) {
            sum += t[r];
            r &= r - 1;
        }
        return sum;
    }
    T query(int l, int r) { return query(r) - query(l - 1); }
    bit(int _n, vector <T>& v) {
        n = _n; t.resize(n + 1);
        for(int i = 1; i <= n; i++) add(i, v[i - 1]);
    }
};

int main()
{
    int n, q, t, x, y;
    fin >> n >> q;
    vector <int> v(n);
    for(int i = 0; i < n; i++) fin >> v[i];
    bit <int> B(n, v);
    for(int i = 0; i < q; i++) {
        fin >> t >> x >> y;
        if(t) fout << B.query(x, y) << "\n";
        else B.add(x, -y);
    }
    return 0;
}