Cod sursa(job #711805)
#include<stdio.h>
int n,m,i,j,x,y,pos,s1,s2,a[15002],c;
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&x);
if(x)
{
pos=0;
for(j=i;j<=n;)
{
a[j]+=x;
for(;!(j&1<<pos);)
pos++;
j+=1<<pos;
pos++;
}
}
}
for(;m;m--)
{
scanf("%d %d %d",&c,&x,&y);
if(c==0)
{
pos=0;
for(j=x;j<=n;)
{
a[j]-=y;
for(;!(j&1<<pos);)
pos++;
j+=1<<pos;
pos++;
}
}
else
{
s1=0;
s2=0;
x--;
for(;x>0;)
{
s1+=a[x];
for(i=0;!(x&1<<i);i++);
if(i)
x-=(1<<i);
else
x--;
}
for(;y>0;)
{
s2+=a[y];
for(i=0;!(y&1<<i);i++);
if(i)
y-=(1<<i);
else
y--;
}
printf("%d\n",s2-s1);
}
}
return 0;
}