Cod sursa(job #656552)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 4 ianuarie 2012 20:01:46
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,a[15005],aib[15005];
void update(int i, int val)
{
	while(i<=n)
	{
		aib[i]+=val;
		i+=((i^(i-1))+1)>>1;
	}
}



int query(int i)
{
	int nr=0;
	if(i==1)
		return aib[i];
	while(i>1)
	{
		nr=nr+aib[i];
	//	i-=((i^(i-1))+1)>>1;
	}
	return nr;
}





int main()
{
	int m,i,j,k,x;
	fin>>n>>m;
	for(i=1;i<=n;++i)
	{
		fin>>a[i];
		update(i,a[i]);
	}
	for(i=1;i<=m;++i)
	{
		fin>>k;
		if(k==0)
		{
			fin>>x>>j;
			update(x,-j);
		}
		else
		{
			fin>>x>>j;
			fout<<query(j)-query(x-1)<<"\n";
		}
	}
	return 0;
}