Pagini recente » Cod sursa (job #334694) | Cod sursa (job #2235523) | Cod sursa (job #191163) | Cod sursa (job #177342) | Cod sursa (job #1209403)
#include <stdio.h>
#define MAXN 100000
int aib[MAXN + 1];
int ultb(x){
return x & (-x);
}
int sum(int poz){
int rez = 0;
while(poz > 0){
rez += aib[poz];
poz -= ultb(poz);
}
return rez;
}
void add(int plus, int poz, int n){
while(poz <= n){
aib[poz] += plus;
poz += ultb(poz);
}
return ;
}
int main(){
FILE *in = fopen("datorii.in", "r");
int n, m;
fscanf(in, "%d%d", &n, &m);
int i, x;
for(i = 1; i <= n; i++){
fscanf(in, "%d", &x);
add(x, i, n);
}
FILE *out = fopen("datorii.out", "w");
int y, z;
for(i = 1; i <= m; i++){
fscanf(in, "%d%d%d", &x, &y, &z);
if(x == 0) add(-z, y, n);
else fprintf(out, "%d\n", sum(z) - sum(y - 1));
}
fclose(in);
fclose(out);
return 0;
}