Pagini recente » Cod sursa (job #1043654) | Cod sursa (job #1956326)
#include <cstdio>
#define NMAX 15001
#define max(a, b) a >= b ? a : b
using namespace std;
int T[4 * NMAX + 66];
int N, M, poz, val, a, b, sum;
FILE *f = freopen("datorii.in", "r", stdin);
FILE *g = freopen("datorii.out", "w", stdout);
void update(int nod, int st, int dr) {
int m = (st + dr) / 2;
T[nod] += val;
if(st == dr) return;
if(poz <= m) update(2 * nod, st, m);
else update(2 * nod + 1, m + 1, dr);
}
void query(int nod, int st, int dr) {
int m = (st + dr) / 2;
if(st >= a && dr <= b) {
sum += T[nod];
return;
}
if(a <= m) query(2 * nod, st, m);
if(b > m) query(2 * nod + 1, m + 1, dr);
}
int main() {
scanf("%d%d", &N, &M);
for(int i = 1; i<=N; i++) {
int x;
scanf("%d", &x);
poz = i; val = x;
update(1, 1, N);
}
for(int i =1 ; i<=M; i++ ) {
int type;
scanf("%d", &type);
if(type == 0) {
scanf("%d%d", &poz, &val);
val = -val;
update(1, 1, N);
}
else {
scanf("%d%d", &a, &b);
sum = 0;
query(1, 1, N);
printf("%d\n", sum);
}
}
return 0;
}