Cod sursa(job #495311)

Utilizator c_adelinaCristescu Adelina c_adelina Data 24 octombrie 2010 18:51:43
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <cstdio>
#define lsb(x) x&(-x)
int s[15003];
int main()
{
	int n,m,i,a,b;
	
	freopen("datorii.out","w",stdout);
	freopen("datorii.in","r",stdin);
	scanf("%d %d",&n,&m);
	for (i=1;i<=n;++i)
	{
		scanf("%d",&a);
		b=i;
		while (b<=n) 
			s[b]+=a,b+=lsb(b);
	}
	while (m--)
	{
		scanf("%d %d %d",&i,&a,&b);
		if (i==0)
			{while (a<=n) 
				s[a]-=b,a+=lsb(a);}
			else
			{
				i=0;--a;
				while (b>0) 
					i+=s[b],b-=lsb(b);
				while (a>0) 
					i-=s[a],a-=lsb(a);
				printf("%d\n",i);
			}
	}
	return 0;}