Pagini recente » Cod sursa (job #2363691) | Cod sursa (job #508032) | Cod sursa (job #748866) | Cod sursa (job #810179) | Cod sursa (job #201679)
Cod sursa(job #201679)
#include<cstdio>
long c[100100],a,b,s,n,m,x,i,op;
void modif(long poz, long val){
long x=0;
while(poz<=n){
c[poz]+=val;
while((poz & (1 << x)) ==0)
x++;
poz+=(1 << x);
x++;
}
}
long suma(long dr){
long s=0,x=0;
while(dr>0){
s+=c[dr];
while((dr & (1 << x))==0)
x++;
dr-=(1 << x);
x++;
}
return s;
}
int main(){
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
scanf("%ld%ld",&n,&m);
for(i=1;i<=n;i++){
scanf("%ld",&x);
modif(i,x);
}
for(;m>0;m--){
scanf("%ld",&op);
if(op==0){
scanf("%ld%ld",&a,&b);
modif(a,b);
}
if(op==1){
scanf("%ld%ld",&a,&b);
s=suma(b)-suma(a-1);
printf("%ld\n",s);
}
if(op==2){
scanf("%ld",&a);
printf("-1\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}