Cod sursa(job #164629)

Utilizator mariussMarius Telespan mariuss Data 24 martie 2008 16:41:53
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
#define nmax 15010
int v[nmax],n,m;
inline int lsb(int x)
{
	return (x&(x-1)^x);
}

int query(int x)
{
	int s=0;
	
	while(x>0)
	{
		s+=v[x];
		x-=lsb(x);
	}
	return s;
}
void update(int x, int val)
{
	while(x<=n)
	{
		v[x]+=val;
		x+=lsb(x);
	}
	
}
int main()
{
	int i,cod,a,b,val;
	
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	
	scanf("%d %d",&n,&m);
	
	for(i=1;i<=n;i++)
	{
		scanf("%d",&val);
		update(i,val);
	}
	for(i=1;i<=m;i++)
	{
		scanf("%d %d %d",&cod,&a,&b);
		if(cod==1)
		{
			printf("%d\n",query(b)-query(a-1));
		}
		else
			update(a,-b);
	}
	
	return 0;
}