Pagini recente » Rezultatele filtrării | Cod sursa (job #266244) | Rezultatele filtrării | Borderou de evaluare (job #1420416) | Cod sursa (job #1247317)
#include <stdio.h>
int aib[15001];
int n;
void update(int poz, int valuare){
for (;poz<=n;poz+=poz&(poz-1)^poz)
aib[poz]+=valuare;
}
int query(int poz){
int s;
s=0;
for (;poz;poz-=poz&(poz-1)^poz)
s=s+aib[poz];
return s;
}
int main(){
FILE *fin, *fout;
int m,a,b,i,tip,c;
fin=fopen("datorii.in","r");
fscanf(fin,"%d%d",&n,&m);
for (i=1;i<=n;i++){
fscanf(fin,"%d",&c);
update(i,c);
}
fout=fopen("datorii.out","w");
for (i=1;i<=n;i++){
fscanf(fin,"%d%d%d",&tip,&a,&b);
if (tip==0)
update(a,-b);
else
fprintf(fout,"%d\n",query(b)-query(a-1));
}
fclose(fin);
fclose(fout);
return 0;
}