Pagini recente » Cod sursa (job #442548) | Cod sursa (job #2307307) | Cod sursa (job #661129) | Cod sursa (job #1690771) | Cod sursa (job #2690700)
#include <iostream>
#include <cstdio>
using namespace std;
const int NMAX = 15000;
int n, m;
int aint[2 * NMAX + 5];
void build() {
for(int i = n - 1; i; i--)
aint[i] = aint[i << 1] + aint[i << 1 | 1];
}
void update(int poz, int delta) {
aint[poz += n - 1] += delta;
for(poz >>= 1; poz; poz >>= 1)
aint[poz] = aint[poz << 1] + aint[poz << 1 | 1];
}
int query(int st, int dr) {
int ans = 0;
for(st += n - 1, dr += n - 1; st <= dr; st >>= 1, dr >>= 1) {
if(st & 1)
ans += aint[st++];
if(!(dr & 1))
ans += aint[dr--];
}
return ans;
}
int main() {
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 0; i < n; i++)
scanf("%d", &aint[n + i]);
build();
for(int i = 0; i < m; i++) {
int tip, a, b;
scanf("%d %d %d", &tip, &a, &b);
if(tip)
printf("%d\n", query(a, b));
else
update(a, -b);
}
return 0;
}