Pagini recente » Cod sursa (job #159539) | Cod sursa (job #1881476) | Cod sursa (job #422367) | Cod sursa (job #377334) | Cod sursa (job #2671632)
#include <stdio.h>
#define pow2k(x) (x ^ (x - 1) & x)
using namespace std;
const int MAX_NUMBER = 15123;
int N, M;
int bit[MAX_NUMBER];
void modify(int index, int number) {
for (int i = index; i <= N; i += pow2k(i)) {
bit[i] += number;
}
}
int query(int index) {
int ans = 0;
for (int i = index; i > 0; i -= i & (-i)) {
ans += bit[i];
}
return ans;
}
int main() {
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &N, &M);
for (int i = 1; i <= N; i++) {
int x;
scanf("%d", &x);
modify(i, x);
}
for (int i = 0; i < M; i++) {
int type, x, y;
scanf("%d %d %d", &type, &x, &y);
switch (type) {
case 0: modify(x, -y); break;
case 1: printf("%d\n", query(y) - query(x - 1)); break;
}
}
return 0;
}