Cod sursa(job #601719)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 7 iulie 2011 16:02:32
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>

const int maxn=15001;
int i,N,M,cod,a,b,Arb[maxn];

void update(int poz, int val)
{
	while(poz<=N)
	{
		Arb[poz]+=val;
		poz+=(poz & (-poz));
	}
}

int suma(int poz)
{
	int S=0;
	while(poz)
	{
		S+=Arb[poz];
		poz-=(poz & (-poz));
	}
	return S;
}

int main()
{
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	scanf("%d %d",&N,&M);
	for(i=1;i<=N;i++)
	{
		int x;
		scanf("%d",&x);
		update(i,x);
	}
	for(i=1;i<=M;i++)
	{
		scanf("%d %d %d",&cod,&a,&b);
		if(cod==0)
		{
			update(a,-b);
		}
		else // cod == 1
		{
			printf("%d\n",suma(b)-suma(a-1));
		}
	}
}