Pagini recente » Cod sursa (job #2462491) | Cod sursa (job #2917014) | Cod sursa (job #1381577) | Cod sursa (job #938617) | Cod sursa (job #3139301)
#include <stdio.h>
#include <stdlib.h>
#define zeros(x) ( (x ^ (x - 1)) & x )
int n,AIB[15001];
void Add(int x, int quantity) {
for (int i = x; i <= n; i += zeros(i))
AIB[i] += quantity;
}
int Compute(int x) {
int ret = 0;
for (int i = x; i > 0; i -= zeros(i))
ret += AIB[i];
return ret;
}
int main()
{
int x,m,i,tip,a,b;
FILE *fin, *fout;
fin=fopen("datorii.in", "r");
fout=fopen("datorii.out", "w");
fscanf(fin, "%d %d", &n, &m);
for(i=1;i<=n;i++) {
fscanf(fin, "%d", &x);
Add(i, x);
}
for(i=0; i<m; i++) {
fscanf(fin, "%d %d %d", &tip, &a, &b);
if(tip==1){
fprintf(fout, "%d\n", (Compute(b) - Compute(a-1)));
}
else{
Add(a, -b);
}
}
fclose(fin);
fclose(fout);
return 0;
}