Cod sursa(job #1436818)

Utilizator ipus1Stefan Enescu ipus1 Data 16 mai 2015 14:20:58
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<cstdio>
int v[150001],v2[150001];
int main ()
{freopen ("datorii.in","r",stdin);
freopen ("datorii.out","w",stdout);
int n,m,i,a,b,x,k,s1,s2;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
	{scanf("%d",&k);
	v[i]=v[i-1]+k;
	}
for(i=1;i<=m;i++)
	{x=(i^(i&(i-1)));
	v2[i]=v[i]-v[i-x];
	}
for(i=1;i<=n;i++)
	{scanf("%d%d%d",&k,&a,&b);
	if(k==0)
		{while(a<=n)
			{v2[a]-=b;
			x=(a^(a&(a-1)));
			a+=x;
			}
		}
	else
		{s1=s2=0;
		a--;
		while(a>=1)
			{s1+=v2[a];
			x=(a^(a&(a-1)));
			a-=x;
			}
		while(b>=1)
			{s2+=v2[b];
			x=(b^(b&(b-1)));
			b-=x;
			}
		printf("%d\n",s2-s1);
		}
	}
return 0;
}