Cod sursa(job #129192)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 28 ianuarie 2008 19:09:05
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>

#define nmax 15111

int s[nmax],n,m;

void Add(int i,int x)
{
	for(;i<=n;i=(i|(i-1))+1)
		s[i]+=x;
}

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

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