Cod sursa(job #868489)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 31 ianuarie 2013 09:30:40
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio>
#define NMax 15005
using namespace std;

int n,a[NMax];

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

int query (int poz)
{
	int sum=0;
	while (poz>=1)
	{
		sum+=a[poz];
		poz-=(poz & (-poz));
	}
	return sum;
}

int main ()
{
	int m,i,tip,x,y;
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (i=1; i<=n; i++)
	{
		scanf("%d",&x);
		update(i,x);
	}
	for (i=1; i<=m; i++)
	{
		scanf("%d%d%d",&tip,&x,&y);
		if (!tip)
			update(x,-y);
		else
			printf("%d\n",query(y)-query(x-1));
	}
	return 0;
}