Cod sursa(job #1202973)

Utilizator YoChinezuWeng Mihai Alexandru YoChinezu Data 30 iunie 2014 12:50:44
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>

using namespace std;

int v[15005];

int suma(int a){
    int pas,s=0;
    pas=a;

    for(;pas>=1;pas-=(pas&-pas)){
         s+=v[pas];
    }
    return s;
}

void add(int a,int b,int n){
    int pas=a;
    for(;pas<=n;pas+=(pas&-pas)){
        v[pas]+=b;
    }
}

void Dadd(int a,int b,int n){
    int pas=a;
    for(;pas<=n;pas+=(pas&-pas)){
        v[pas]-=b;
    }
}

int main(){
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);

    int n,m,x,a,b,c;
    scanf("%d%d",&n,&m);

    for(int i=1;i<=n;++i){
        scanf("%d",&x);
        add(i,x,n);
    }

    for(int i=1;i<=m;++i){
        scanf("%d%d%d",&a,&b,&c);
        if(a==0){
            Dadd(b,c,n);
        }else{
            printf("%d\n",suma(c)-suma(b-1));
        }
    }

    return 0;
}