Cod sursa(job #118768)

Utilizator a7893Nae Mihai a7893 Data 27 decembrie 2007 19:40:55
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
#define N 15001
int n,m,a[N];
int bit(int x)
{
	return (x&(x-1))^x;
}
void adaug(int ind, int val)
{
	int i;
	for(i=ind;i<=n;i+=bit(i))
		a[i]+=val;
}
int suma(int dr)
{
	int i,s=0;
	for(i=dr;i>0;i-=bit(i))
		s+=a[i];
	return s;
}
void read()
{
	int i,x;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&x);
		adaug(i,x);
	}
}
void solve()
{
	int i,cod,ind,val,st,dr,s1,s2;
	for(i=1;i<=m;i++)
	{
		scanf("%d",&cod);
		if(cod==0)
		{
			scanf("%d%d",&ind,&val);
			val*=-1;
			adaug(ind,val);
		}
		else
		{
			scanf("%d%d",&st,&dr);
			s1=suma(st-1);
			s2=suma(dr);
			printf("%d\n",s2-s1);
		}
	}
}
int main()
{
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	read();
	solve();
	return 0;
}