Pagini recente » Cod sursa (job #390936) | Cod sursa (job #1609424) | Cod sursa (job #234549) | Cod sursa (job #1916718) | Cod sursa (job #2204987)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
#define MAXN 150005
int n, m;
int lsb(int n) {
return n & -n;
}
int aib[MAXN];
void update(int i, int delta) {
while (i <= n) {
aib[i] += delta;
i += lsb(i);
}
}
int query(int i) {
int result = 0;
while (i > 0) {
result += aib[i];
i -= lsb(i);
}
return result;
}
int range(int a, int b) {
return query(b) - query(a - 1);
}
int main() {
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
int x;
for (int i = 1; i <= n; ++i) {
scanf("%d", &x);
update(i, x);
}
int q, a, b;
for (int i = 0; i < m; ++i) {
scanf("%d %d %d", &q, &a, &b);
if (q == 0) {
update(a, -b);
} else {
printf("%d\n", range(a, b));
}
}
return 0;
}