Pagini recente » Cod sursa (job #2041822) | Cod sursa (job #656086) | Cod sursa (job #2587996) | Cod sursa (job #2375240) | Cod sursa (job #1425459)
#include <stdio.h>
int aib[100001];
int lastbit(int x){
return x&(-x);
}
int capat(int x){
return x-lastbit(x)+1;
}
int sum(int n){
int s;
s=0;
while(n>0){
s=s+aib[n];
n=capat(n)-1;
}
return s;
}
void decrease(int pos,int val,int n){\
int i;
i=pos;
while(i<=n){
aib[i]=aib[i]-val;
i=i+lastbit(i);
}
}
void add(int pos,int val,int n){\
int i;
i=pos;
while(i<=n){
aib[i]=aib[i]+val;
i=i+lastbit(i);
}
}
int main(){
int n,m,x,i,f,a,b;
FILE *fin=fopen("datorii.in","r");
FILE *fout=fopen("datorii.out","w");
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++){
fscanf(fin,"%d",&x);
add(i,x,n);
}
for(i=0;i<m;i++){
fscanf(fin,"%d%d%d",&f,&a,&b);
if(f==0)
decrease(a,b,n);
else if(f==1)
fprintf(fout,"%d\n",sum(b)-sum(a-1));
}
fclose(fin);
fclose(fout);
return 0;
}