Pagini recente » Cod sursa (job #251094) | Cod sursa (job #780088) | Cod sursa (job #140997) | Cod sursa (job #1442146) | Cod sursa (job #2120377)
#include <cstdio>
const int MAX_N = 15000;
int N;
int aib[5 + MAX_N];
int terminal0(int x) {
return x & -x;
}
void update(int poz, int val) {
for (int i = poz; i <= N; i += terminal0(i)) {
aib[i] += val;
}
}
int query(int poz) {
int s = 0;
for (int i = poz; i >= 1; i -= terminal0(i)) {
s += aib[i];
}
return s;
}
int main() {
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int M;
scanf("%d%d", &N, &M);
for (int i = 1; i <= N; i++) {
int x;
scanf("%d", &x);
update(i, x);
}
for (int i = 1; i <= M; i++) {
int type, a, b;
scanf("%d%d", &type, &a);
if (type == 0) {
scanf("%d", &b);
update(a, -b);
} else {
scanf("%d", &b);
printf("%d\n", query(b) - query(a - 1));
}
}
return 0;
}