Cod sursa(job #3267567)

Utilizator IleaIlea Bogdan Ilea Data 11 ianuarie 2025 14:01:46
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>

using namespace std;

#define endl '\n'

int n, dat[15001], x, y, m, op;
void update(int ind, int x){
    for (int i=ind; i<=n; i+=(i&-i)){
        dat[i]-=x;
    }
}
int query(int ind){
    int sum=0;
    for (int i=ind; i>=1; i-=(i&-i)){
        sum+=dat[i];
    }
    return sum;
}
int main(){
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    cin>>n>>m;
    for (int i=1; i<=n; ++i){
        cin>>x;
        update(i, -x);
    }
    while (m--){
        cin>>op>>x>>y;
        if (!op){
            // update
            update(x, y);
        } else {
            // query
            cout<<query(y)-query(x-1)<<endl;
        }
    }
}