Pagini recente » Cod sursa (job #2583128) | Cod sursa (job #2387197) | Cod sursa (job #1600920) | Cod sursa (job #1346994) | Cod sursa (job #1938101)
#include <stdio.h>
#include <stdlib.h>
#define k(x) (x&(-x))
int v[15001];
int aib[15001];
int n;
void add(int x,int quantity)
{
int i;
for(i=x;i<=n;i+=k(i))
aib[i]+=quantity;
}
int compute(int x){
int i,ret=0;
for(i=x;i>0;i-=k(i))
ret+=aib[i];
return ret;
}
int main()
{
int m,i,q,p,cer;
FILE*fi,*fo;
fi=fopen("datorii.in","r");
fo=fopen("datorii.out","w");
fscanf(fi,"%d%d",&n,&m);
for(i=1;i<=n;i++){
fscanf(fi,"%d",&q);
add(i,q);
}
for(i=0;i<m;i++)
{
fscanf(fi,"%d",&cer);
if(cer==0){
fscanf(fi,"%d%d",&p,&q);
add(p,-q);
}
else {
fscanf(fi,"%d%d",&p,&q);
fprintf(fo,"%d\n",compute(q)-compute(p-1));
}
}
fclose(fi);
fclose(fo);
return 0;
}