Cod sursa(job #360332)

Utilizator prdianaProdan Diana prdiana Data 30 octombrie 2009 23:15:31
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#define MAXN 16000

int aib[MAXN],n,q,i,x,y,op;

inline void insert(int node,int val)
{

	while (node <= n)
	{
		aib[node] += val;
		node += node & - node;
	}
}

inline int query(int node)
{
	int sum  = 0;
	while (node != 0)
	{
		sum+=aib[node];
		node -= node & - node;
	}

	return sum;
}

inline int interval(int st,int en)
{
	return query(en) - query(st-1) ;
}

int main()
{
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);

	scanf("%d%d",&n,&q);

	for (i = 1; i<= n; i++)
	{
		scanf("%d%",&x);
		insert(i,x);
	}

	for (i=0;i<q;i++)
	{
		scanf("%d%d%d",&op,&x,&y);
		switch (op)
		{
		case 0:
			insert(x,-y);
			break;
		case 1:
			printf("%d\n",interval(x,y));
			break;
		}
	}
	return 0;
}