Pagini recente » Cod sursa (job #825358) | Cod sursa (job #972180) | Cod sursa (job #2251367) | Cod sursa (job #685205) | Cod sursa (job #250881)
Cod sursa(job #250881)
#include<stdio.h>
#define IN "datorii.in"
#define OUT "datorii.out"
#define f(x) ( (x ^ (x - 1)) & x )
int A[15001],n,m;
void adauga(int x, int val){
int i;
for (i=x;i<=n;i+=f(i)) A[i]+=val;}
int suma(int x)
{ int i, sum=0;
for (i=x; i>0;i-=f(i))
sum+=A[i];
return sum;
}
int main(){
FILE *f=fopen(IN,"rt");
FILE *g=fopen(OUT,"wt");
fscanf(f,"%d%d",&n,&m);
int i,o,x,w;
for(i=1;i<=n;i++){fscanf(f,"%d",&x);adauga(i,x);}
for(;m--;){
fscanf(f,"%d%d%d",&o,&x,&w);
if(!o){ w=-w;adauga(x,w); }
else { fprintf(g,"%d\n",suma(w) - suma(x-1));
}
}
return 0;
}