Pagini recente » Cod sursa (job #109194) | Cod sursa (job #2539287) | Cod sursa (job #1988144)
#include <cstdio>
#define MAXN 15000
int aib[MAXN + 1];
inline void add(int poz, int val, int n) {
while (poz <= n) {
aib[poz] += val;
poz += poz & -poz;
}
}
inline int sum(int x) {
int s = 0;
while (x > 0) {
s += aib[x];
x -= x & -x;
}
return s;
}
int main() {
int n, m, a, b, op;
FILE *fin = fopen("datorii.in", "r");
fscanf(fin, "%d%d", &n, &m);
for (int i = 1; i <= n; ++i) {
fscanf(fin, "%d", &a);
add(i, a, n);
}
FILE *fout = fopen("datorii.out", "w");
for (int i = 0; i < m; ++i) {
fscanf(fin, "%d%d%d", &op, &a, &b);
switch (op) {
case 0: add(a, -b, n);
break;
case 1: fprintf(fout, "%d\n", sum(b) - sum(a - 1));
break;
}
}
fclose(fin);
fclose(fout);
return 0;
}