Pagini recente » Istoria paginii utilizator/adelinacazacu | Cod sursa (job #869363) | Cod sursa (job #2463601) | Cod sursa (job #1853481) | Cod sursa (job #2351734)
#include <stdio.h>
const int MAX_N = 15000;
int n, AIB[1 + MAX_N];
void update(int pos, int val) {
for (int i = pos; i <= n; i += i & (-i))
AIB[i] += val;
}
int query(int pos) {
int val = 0;
for (int i = pos; i > 0; i -= i & (-i))
val += AIB[i];
return val;
}
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 c, u, v;
scanf("%d%d%d", &c, &u, &v);
if (c == 0)
update(u, -v);
else if (c == 1)
printf("%d\n", query(v) - query(u - 1));
}
fclose(stdin);
fclose(stdout);
return 0;
}