Pagini recente » Cod sursa (job #1088940) | Cod sursa (job #1322966) | Cod sursa (job #2040648) | Cod sursa (job #1737249) | Cod sursa (job #235579)
Cod sursa(job #235579)
#include<stdio.h>
FILE *f;
FILE *g;
int n,m,a[15005],val;
int nrb(int x)
{
return (x&(x-1))^x;
}
void adauga(int x)
{
a[x]-=val;
while((x+=nrb(x))<=n)
a[x]-=val;
}
void adauga1(int x)
{
a[x]+=val;
while((x+=nrb(x))<=n)
a[x]+=val;
}
int suma(int x)
{
int s=a[x];
while((x-=nrb(x)))
s+=a[x];
return s;
}
int main()
{
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
int c,x,y;
fscanf(f,"%d %d",&n,&m);
for(int i=1; i<=n; i++)
{
fscanf(f,"%d",&val);
adauga1(i);
}
for(; m; m--)
{
fscanf(f,"%d %d %d",&c,&x,&y);
if(!c)
{
val=y;
adauga(x);
}
else
fprintf(g,"%d\n",suma(y)-suma(x-1));
}
fclose(g);
fclose(f);
}