Cod sursa(job #202161)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 6 august 2008 14:59:22
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#define IN "datorii.in"
#define OUT "datorii.out"
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define N_MAX 1<<14

int suma,M,N;
int v[N_MAX];

void add(int poz,int x);
void scan()
{
	int x;
	freopen(IN, "r",stdin);
	freopen(OUT, "w",stdout);
	scanf("%d%d",&N,&M);
	FOR(i,1,N)
	{
		scanf("%d",&x);
		add(i,+x);
	}	
}		

void add(int poz,int x)
{
	for(int i = poz; i<=N ; i = (i | (i-1) )+1 )
		v[i] += x;
}

int query(int i)
{
	int aux = 0;
	for(; i ; i &= i-1)
		aux += v[i];
	return aux;
}

void solve()
{
	int t,x,y;
	FOR(i,1,N)
		printf("%d ", v[i]);
	printf("\n");	
			
	FOR(i,1,M)
	{
		scanf("%d%d%d\n", &t,&x,&y);
		if(!t)
		{
			add(x,-y);
			FOR(i,1,N)
				printf("%d ", v[i]);
			printf("\n");	
		}	
		else
			printf("%d\n",query(y)-query(x-1));  
	}
}

int main()
{
	scan();
	solve();
	return 0;
}