Cod sursa(job #574846)
#include <stdio.h>
int n, m;
int a[15001];
static void update(int idx, int val) {
while(idx <= n) {
a[idx] += val;
idx += (idx & -idx);
}
}
static int get(int idx) {
int sum = 0;
while(idx) {
sum += a[idx];
idx -= (idx & -idx);
}
return sum;
}
static int getAB(int a, int b) {
return get(b) - get(a - 1);
}
int main() {
int i;
int tmp, p, q;
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
for(i = 1; i <= n; ++i) {
scanf("%d", &tmp);
update(i, tmp);
}
while(m--) {
scanf("%d %d %d", &tmp, &p, &q);
if(tmp) {
printf("%d\n", getAB(p, q));
}
else {
update(p, -q);
}
}
fclose(stdout);
return 0;
}