Pagini recente » Cod sursa (job #736460) | Cod sursa (job #3042244) | Cod sursa (job #1517482) | Cod sursa (job #2611066) | Cod sursa (job #130249)
Cod sursa(job #130249)
#include<stdio.h>
#define N 15001
int m,n,a[N];
int zero(int x){
int r=1;
while(!(x&1)){
x>>=1;
r<<=1;
}
return r;
}
void adauga(int i,int x){
while(i<=n){
a[i]+=x;
i+=zero(i);
}
}
int suma(int p){
int s=0;
while(p){
s+=a[p];
p-=zero(p);
}
return s;
}
void calcul(){
int i,x,tip,p,q,zi;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i){
scanf("%d",&x);
adauga(i,x);
}
/*
for(i=1;i<=n;++i)
printf("%d ",a[i]);
*/
for(i=1;i<=m;++i){
scanf("%d",&tip);
if(tip){
scanf("%d%d",&p,&q);
printf("%d\n",suma(q)-suma(p-1));
}
else{
scanf("%d%d",&zi,&x);
adauga(zi,-x);
}
}
}
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
calcul();
fclose(stdin);
fclose(stdout);
return 0;
}