Cod sursa(job #3313688)

Utilizator DavidDiacDavid Diac DavidDiac Data 5 octombrie 2025 21:36:38
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int NMAX=1e5;

int aib[NMAX], a[NMAX];
int n, m;

void update(int i, int val) {
    for (; i <= n; i += i & (-i)) {
        aib[i] -= val;
    }
}

int query(int i) {
    int ans = 0;
    for (; i > 0; i -= i & (-i)) {
        ans += aib[i];
    }
    return ans;
}

int sum(int st, int dr) {
    return query(dr) - query(st - 1);
}

int main() {
    int i, t, x, y;
    fin>>n>>m;
    for (i=1;i<=n;i++) {
        fin>>a[i];
        update(i, -a[i]);
    }
    for (i=1;i<=m;i++) {
        fin>>t>>x>>y;
        if (t==0) {
            update(x, y);
        } else {
            fout<<sum(x, y)<<endl;
        }
    }
    return 0;
}