Pagini recente » Cod sursa (job #2960464) | Cod sursa (job #1868972) | Cod sursa (job #2091273) | Cod sursa (job #1392) | Cod sursa (job #84826)
Cod sursa(job #84826)
#include <stdio.h>
#define MAX 15001
int a[MAX], n, nr_op;
FILE *f = fopen("datorii.in", "r");
FILE *g = fopen("datorii.out", "w");
void update(int poz, int val){
a[poz]+=val;
while((poz+=(poz^(poz-1))&poz) <= n)
a[poz]+=val;
}
int query(int poz){
int S = a[poz];
while((poz-=(poz^(poz-1))&poz) >= 1)
S+=a[poz];
return S;
}
int main() {
int i, v, b, p, q;
fscanf(f, "%d %d", &n, &nr_op);
for(i=1; i<=n; ++i){
fscanf(f, "%d", &v);
update(i, v);
}
for(i=1; i<=nr_op; ++i){
fscanf(f, "%d %d %d", &b, &p, &q);
if(!b) update(p, -q);
else fprintf(g, "%d\n", query(q)-query(p-1));
}
fclose(f); fclose(g);
return 0;
}