Pagini recente » Monitorul de evaluare | Profil BRAVO | Cod sursa (job #2023005) | Cod sursa (job #134069) | Cod sursa (job #1776891)
#include <stdio.h>
#define zeros(x) ( (x ^ (x - 1)) & x )
#define MAX_N 15002
#define MAX_M 100002
int aib[MAX_M];
int n, m;
void add(int x, int quantity)
{
int i;
for (i = x; i <= n; i += zeros(i))
aib[i] += quantity;
}
int compute(int x)
{
int i, ret = 0;
for (i = x; i > 0; i -= zeros(i))
ret += aib[i];
return ret;
}
int main() {
FILE *fin = fopen("datorii.in", "r");
FILE *fout = fopen("datorii.out", "w");
fscanf(fin, "%d%d", &n, &m);
int i, x;
for(i = 1;i <= n;i++){
fscanf(fin, "%d", &x);
add(i, x);
}
int op, t, v;
for(i = 0;i < m;i++) {
fscanf(fin, "%d%d%d", &op, &t, &v);
if(op == 0) {
add(t, -v);
}
else {
fprintf(fout, "%d\n", compute(v) - compute(t - 1));
}
}
fclose(fin);
fclose(fout);
}