Pagini recente » Cod sursa (job #2626865) | Cod sursa (job #533294) | Cod sursa (job #1212065) | Cod sursa (job #2716312) | Cod sursa (job #2567290)
#include <iostream>
#include <cstdio>
#define NMAX 15000
using namespace std;
int n, m;
int aib[NMAX + 5];
int lsb(int x) {
return (x ^ (x - 1)) & x;
}
void update(int poz, int val) {
for(int i = poz; i <= n; i += lsb(i))
aib[i] += val;
}
int query(int poz) {
int ans = 0;
for(int i = poz; i > 0; i -= lsb(i))
ans += aib[i];
return ans;
}
int main() {
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int a, b, c;
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; i++) {
scanf("%d", &a);
update(i, a);
}
for(int i = 1; i <= m; i++) {
scanf("%d %d %d", &a, &b, &c);
if(!a)
update(b, -c);
else
printf("%d\n", query(c) - query(b - 1));
}
return 0;
}