Pagini recente » Cod sursa (job #1208397) | Cod sursa (job #668575) | Cod sursa (job #1674944) | Cod sursa (job #2078041) | Cod sursa (job #1990843)
#include <stdio.h>
int n, m;
int v[15001];
int ftree[15001];
int ftree_read(int i) {
int sum = 0;
while (i > 0) {
sum += ftree[i];
i -= i & -i;
}
return sum;
}
void ftree_add(int i, int val) {
while (i <= 15001) {
ftree[i] += val;
i += i & -i;
}
}
void read_data() {
//freopen("input", "r", stdin);
FILE *f = fopen("datorii.in", "r");
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%d", &v[i]);
ftree_add(i, v[i]);
}
fclose(f);
}
inline int op_A(int pos, int val) {
ftree_add(pos, -val);
}
inline int op_B(int pos1, int pos2) {
return ftree_read(pos2) - ftree_read(pos1 - 1);
}
int main(void) {
FILE *f = fopen("datorii.out", "w");
read_data();
int op, a, b;
for (int i = 0; i < m; i++) {
scanf("%d %d %d", &op, &a, &b);
if (op) {
fprintf(f, "%d\n", op_B(a, b));
} else {
op_A(a, b);
}
}
fclose(f);
return 0;
}