Pagini recente » Cod sursa (job #2388842) | Cod sursa (job #2511717) | Cod sursa (job #3208471) | Cod sursa (job #2937394) | Cod sursa (job #1425398)
#include <stdio.h>
#include <stdlib.h>
#define zero(x) (x&(-x))
int aib[15001];
inline void update(int poz, int val, int n){
for(poz; poz<=n; poz+=zero(poz))
aib[poz]+=val;
}
inline int suma(int poz){
int sum=0;
for(poz; poz>0; poz-=zero(poz))
sum+=aib[poz];
return sum;
}
int main()
{
FILE *fin, *fout;
int n, m, i, op, a, b;
fin=fopen("datorii.in", "r");
fscanf(fin, "%d%d", &n, &m);
for(i=1; i<=n; i++){
fscanf(fin, "%d", &a);
update(i, a, n);
}
fout=fopen("datorii.out", "w");
for(i=0; i<m; i++){
fscanf(fin, "%d%d%d", &op, &a, &b);
switch(op){
case 0: update(a, -b, n);
break;
case 1: fprintf(fout, "%d\n", suma(b)-suma(a-1));
break;
}
}
fclose(fout);
return 0;
}