Pagini recente » Cod sursa (job #910019) | Cod sursa (job #2551477) | Cod sursa (job #3041827) | Cod sursa (job #2806186) | Cod sursa (job #2814786)
#include <stdio.h>
using namespace std;
const int NMAX = 15e5;
int aib[NMAX + 1], n;
int suma(int val) {
int s = 0;
while(val) {
s += aib[val];
val -= (val & (-val));
}
return s;
}
void update(int i, int val) {
while(i <= n) {
aib[i] += val;
i += (i & (-i));
}
}
int main() {
int m, i, op, a, b;
FILE *fin, *fout;
fin = fopen("datorii.in", "r");
fout = fopen("datorii.out", "w");
fscanf(fin, "%d%d", &n, &m);
for(i = 0; i < n; i++) {
int x;
fscanf(fin, "%d", &x);
update(i + 1, x);
}
for(i = 0; i < m; i++) {
fscanf(fin, "%d%d%d", &op, &a, &b);
if(op == 0)
update(a, -b);
else
fprintf(fout, "%d\n", suma(b) - suma(a - 1));
}
fclose(fin);
fclose(fout);
return 0;
}