Pagini recente » Cod sursa (job #754448) | Cod sursa (job #167435) | Cod sursa (job #1353539) | Cod sursa (job #296833) | Cod sursa (job #332445)
Cod sursa(job #332445)
#include<stdio.h>
#include<stdlib.h>
long int *c;
int n;
long int suma(int i)
{
long int s=0;
while(i>0)
{
s+=c[i];
i-=(i^(i-1))&i;
}
return s;
}
void adauga(int x, int i)
{
while(i<=n)
{
c[i]+=x;
i+=(i^(i-1))&i;
}
}
int main()
{
FILE *f,*g;
int m,i,x,y,z;
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
fscanf(f,"%d%d",&n,&m);
c=(long int*)calloc(n+1,sizeof(long int));
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&x);
adauga(x,i);
}
for(i=0;i<m;i++)
{
fscanf(f,"%d%d%d",&x,&y,&z);
if(x==0) adauga(-z,y);
else fprintf(g,"%ld\n",suma(z)-suma(y-1));
}
fclose(f);
fclose(g);
return 0;
}