Pagini recente » Cod sursa (job #1949996) | Cod sursa (job #2102315) | Cod sursa (job #1562497) | Cod sursa (job #1754333) | Cod sursa (job #1320442)
#include <cstdio>
#define MAXN 15001
using namespace std;
int N, M, A[MAXN];
int AIB[MAXN];
void init(int idx, int val) {
while (idx < MAXN) {
AIB[idx] += val;
idx += (idx & -idx);
}
}
void update(int idx, int val) {
while (idx < MAXN) {
AIB[idx] -= val;
idx += (idx & -idx);
}
}
int query(int idx) {
int sum = 0;
while (idx >= 1) {
sum += AIB[idx];
idx -= (idx & -idx);
}
return sum;
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &N, &M);
for (int i = 1; i <= N; i++) {
scanf("%d", &A[i]);
init(i, A[i]);
}
int op, T, V, P, Q;
while (M--) {
scanf("%d", &op);
if (op == 0) { // operatie de tip A (achitare)
scanf("%d %d", &T, &V);
update(T, V);
} else if (op == 1) { // operatie de tip B (interogare)
scanf("%d %d", &P, &Q);
printf("%d\n", query(Q) - query(P - 1));
}
}
return 0;
}