Pagini recente » Cod sursa (job #1988246) | Cod sursa (job #2653324) | Cod sursa (job #888821) | Cod sursa (job #575328) | Cod sursa (job #517139)
Cod sursa(job #517139)
#include <stdio.h>
long b[100000],aib[100000],i,j,x,y,n,st,fn,s,s1,s2,m,mij,c;
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%ld%ld",&n,&m);
for(i=1;i<=n;i++)
{
j=i;
b[i]=1;
while(j%2==0)
{
b[i]*=2;
j/=2;
}
}
for(i=1;i<=n;i++)
{
scanf("%ld",&x);
for(j=i;j<=n;j+=b[j])aib[j]+=x;
}
for(;m;m--)
{
scanf("%ld",&c);
if(c==0)
{
scanf("%ld%ld",&x,&y);
for(i=x;i<=n;i+=b[i])aib[i]-=y;
}
else
if(c==1)
{
scanf("%ld%ld",&x,&y);
s1=s2=0;
for(i=x-1;i>=1;i-=b[i])s1+=aib[i];
for(i=y;i>=1;i-=b[i])s2+=aib[i];
s2=s2-s1;
printf("%ld\n",s2);
}
}
return 0;
}