Cod sursa(job #328401)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 1 iulie 2009 21:58:26
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<fstream>
#define bit(x) ((x^(x-1))&x)
#define MaxN 15005
#define MaxM 100005

using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int arb[MaxN],n,m;

void add(int x, int v)//arb[x]+=v
{	for(;x<=n;x+=bit(x)) arb[x]+=v;}

int query(int x)//sum 1->x
{	int s=0;
	for(;x;x-=bit(x)) s+=arb[x];
	return s;
}

int main()
{	int i,val,op,a,b;
	fin>>n>>m;
	for(i=1;i<=n;i++)
	{	fin>>val;
		add(i,val);
	}
	for(i=1;i<=m;i++)
	{	fin>>op;
		if(op==0)
		{	fin>>a>>b;
			add(a,-b);
		}
		if(op==1)
		{	fin>>a>>b;
			fout<<query(b)-query(a-1)<<'\n';
		}
	}
	return 0;
}