Cod sursa(job #1423670)

Utilizator robx12lnLinca Robert robx12ln Data 22 aprilie 2015 10:53:01
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,v[100005];
void update1(int p,int x){
    for(;p<=n;p+=(p&-p)){
        v[p]+=x;
    }
}
void update(int p,int x){
    for(;p<=n;p+=(p&-p)){
        v[p]-=x;
    }
}
int query(int p){
    int s=0;
    for(;p!=0;p-=(p&-p)){
        s+=v[p];
    }
    return s;
}
int i,val,poz,a,b,p,u,k,op,mid;
int main(){
    fin>>n>>k;
    for(i=1;i<=n;i++){
        fin>>val;
        update1(i,val);
    }
    for(;k;k--){
        fin>>op;
        if(op==0){
            fin>>poz>>val;
            update(poz,val);
        }else{
            fin>>a>>b;
            fout<<query(b)-query(a-1)<<"\n";
        }
    }
    return 0;
}