Pagini recente » Cod sursa (job #101270) | Cod sursa (job #2747926) | Cod sursa (job #2817585) | Cod sursa (job #68116) | Cod sursa (job #50099)
Cod sursa(job #50099)
#include <stdio.h>
long c[15000],n,m,op,p,q,i,poz,s,s2;
int main()
{
FILE *fin,*fout;
fin=fopen("datorii.in","rt");
fout=fopen("datorii.out","wt");
fscanf(fin,"%ld %ld",&n,&m);
for (i=1;i<=n;i++)
{ fscanf(fin,"%ld ",&q);
poz=0;
p=i;
while (p<=n)
{
c[p]+=q;
while ((p&(1<<poz))==0)
poz++;
p=p+(1<<poz);
poz++;
}
}
for (i=1;i<=m;i++)
{ fscanf(fin,"%ld %ld %ld ",&op,&p,&q);
if (op==0)
{
poz=0;
while (p<=n)
{
c[p]-=q;
while ((p&(1<<poz))==0)
poz++;
p=p+(1<<poz);
poz++;
}
}
if (op==1)
{s=0;
poz=0;
while (q>0)
{ s+=c[q];
while ((q&(1<<poz))==0)
poz++;
q=q-(1<<poz);
poz++;
}
poz=0;
p--;
s2=0;
while (p>0)
{ s2+=c[p];
while ((p&(1<<poz))==0)
poz++;
p=p-(1<<poz);
poz++;
}
fprintf(fout,"%ld\n",s-s2);
}
}
return 0;
}