Pagini recente » Cod sursa (job #184894) | Cod sursa (job #2574102) | Cod sursa (job #1588503) | Cod sursa (job #584330) | Cod sursa (job #472680)
Cod sursa(job #472680)
#include <iostream>
#include <stdio.h>
using namespace std;
#define zero(i) (i^(i-1))&i
int aib[15001],m,n,x,op,a,b,i;
FILE *fin=fopen("datorii.in","r"), *fout=fopen("datorii.out","w");
void aduna(int poz, int val) {
for(;poz<=n;poz+=zero(poz)) {
aib[poz]+=val;
}
}
int suma(int poz) {
int rez=0;
for(;poz>0;poz-=zero(poz)) {
rez+=aib[poz];
}
return rez;
}
int main()
{
fscanf(fin,"%i %i",&n,&m);
for(i=1;i<=n;i++) {
fscanf(fin,"%i",&x);
aduna(i,x);
}
for(i=1;i<=m;i++) {
fscanf(fin,"%i %i %i",&op,&a,&b);
if (op==0) {aduna(a,-b);}
else if (op==1) {fprintf(fout,"%i\n",suma(b)-suma(a-1));}
}
fclose(fout);
return 0;
}