Cod sursa(job #336261)

Utilizator hendrikHendrik Lai hendrik Data 31 iulie 2009 12:21:25
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
using namespace std;

int n,m,x,sum[20000],type,y;

void update(int idx,int val){
    for (int i=idx;i<=n;i+=(i & -i)){
        sum[i]+=val;
    }
}

int query(int idx){
    int suma=0;
    for (int i=idx;i>0;i-=(i & -i)){
        suma+=sum[i];
    }
    return suma;
}

int main(){
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++){
        scanf("%d",&x);
        update(i,x);
    }
    for (int i=1;i<=m;i++){
        scanf("%d %d %d",&type,&x,&y);
        if (type){
            printf("%d\n",query(y)-query(x-1));
        }
        else {
            update(x,-y);
        }
    }
    //system("pause");
    return 0;
}