Pagini recente » Istoria paginii runda/where_is_the_fix/clasament | Cod sursa (job #2169683) | Cod sursa (job #1336192) | Diferente pentru home intre reviziile 409 si 410 | Cod sursa (job #161645)
Cod sursa(job #161645)
#include<stdio.h>
int m,n,v[15001];
int nrzero(int x){
int r=1;
while(!(x&1)){
x>>=1;
r<<=1;
}
return r;
}
void adauga(int i,int x){
while(i<=n){
v[i]+=x;
i+=nrzero(i);
}
}
int suma(int p){
int s=0;
while(p){
s+=v[p];
p-=nrzero(p);
}
return s;
}
void boom(){
int i,x,w,p,q,z;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i){
scanf("%d",&x);
adauga(i,x);
}
for(i=1;i<=m;++i){
scanf("%d",&w);
if(w){
scanf("%d%d",&p,&q);
printf("%d\n",suma(q)-suma(p-1));
}
else{
scanf("%d%d",&z,&x);
adauga(z,-x);
}
}
}
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
boom();
fclose(stdin);
fclose(stdout);
return 0;
}