Cod sursa(job #1028014)

Utilizator mazaandreiAndrei Mazareanu mazaandrei Data 13 noiembrie 2013 15:37:02
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#define maxn 16383
using namespace std;
ifstream in("datorii.in"); ofstream out("datorii.out");
int n,m,x,tip,a,b,c[maxn];
void build(int poz, int val){
    for(int i=poz; i<=maxn; i+= (i & -i))
        c[i]+=x;
}
void update(int poz, int val){
    for(int i=poz; i<=maxn; i+= (i & -i))
        c[i]-=val;
}
void query(int st, int dr){
    int s=0;
    for(int i=dr; i; i-=( i & -i))
        s+=c[i];
    for(int i=st-1; i; i-= (i & -i))
        s-=c[i];
    out<<s<<'\n';
}
int main(){
    in>>n>>m;
    for(int i=1;i<=n;++i){
        in>>x;
        if(x)
            build(i,x);
    }
    for(int i=1;i<=m;++i){
        in>>tip>>a>>b;
        if(!tip)
            update(a,b);
        else
            query(a,b);
    }
    out.close();
    return 0;
}