Pagini recente » Cod sursa (job #2439199) | Cod sursa (job #3174164) | Cod sursa (job #2583810) | Cod sursa (job #191478) | Cod sursa (job #50017)
Cod sursa(job #50017)
#include <stdio.h>
long long c[15000],n,m,op,p,q,i;
void update(long long ind,long long val)
{ int poz=0;
while (ind<=n)
{
c[ind]+=val;
while ((ind&(1<<poz))==0)
poz++;
ind=ind+(1<<poz);
poz++;
}
}
long long sum(long long ind)
{ int poz=0;
long long s=0;
while (ind>0)
{ s+=c[ind];
while ((ind&(1<<poz))==0)
poz++;
ind=ind-(1<<poz);
poz++;
}
return s;
}
int main()
{
FILE *fin,*fout;
fin=fopen("datorii.in","rt");
fout=fopen("datorii.out","wt");
fscanf(fin,"%lld %lld",&n,&m);
for (i=1;i<=n;i++)
{ fscanf(fin,"%lld ",&q);
update(i,q);
}
for (i=1;i<=m;i++)
{ fscanf(fin,"%lld %lld %lld ",&op,&p,&q);
if (op==0)
update(p,-q);
else
fprintf(fout,"%lld\n",sum(q)-sum(p-1));
}
return 0;
}