Cod sursa(job #2289638)

Utilizator M1st1cVlad Vaculin M1st1c Data 24 noiembrie 2018 22:47:58
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin ("datorii.in");
ofstream fout("datorii.out");
int a[20000], t[20000];
int n,m;
void upd(int k, int x){
    for(int i=k; i<=n; i+=(i&-i))
        t[i]+=x;
}

int q(int k){
    int r=0;
    for(int i = k; i>0; i-=(i&-i))
        r+=t[i];
    return r;
}
int main(){
    fin>>n>>m;
    for(int i = 1; i<=n; i++){
        fin>>a[i];
        upd(i, a[i]);
    }

    int x,y,c;
    for(int i=0; i<m; i++){
        fin>>c>>x>>y;
        if(c){
            fout<<q(y)-q(x-1)<<"\n";
        } else {
            upd(x, -y);
        }
    }
    return 0;
}