Pagini recente » Cod sursa (job #2951950) | Cod sursa (job #2809622) | Cod sursa (job #869378) | Cod sursa (job #1577547) | Cod sursa (job #44283)
Cod sursa(job #44283)
#include <stdio.h>
int X[15001],n,m;
void badd(int ind, int x)
{
int poz;
poz=1;
while (ind<=n)
{
X[ind]+=x;
while ((ind & poz) == 0) poz=poz<<1;
ind=ind+poz;
poz=poz<<1;
}
}
int bbget(int ind)
{
int ret=0, poz;
poz=1;
while (ind>0)
{
ret+=X[ind];
while((ind & poz)==0) poz=poz<<1;
ind=ind-poz;
poz=poz<<1;
}
return ret;
}
int bget(int a, int b)
{
return bbget(b)-bbget(a-1);
}
int main (void)
{
int a,b,c,i;
FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&a);
badd(i,a);
}
for(;m!=0;m--)
{
fscanf(f,"%d %d %d",&a,&b,&c);
if (a==0) badd(b,-c); else
fprintf(g,"%d\n",bget(b,c));
}
fclose(g);
fclose(f);
return 0;
}