Cod sursa(job #711088)

Utilizator ms-ninjacristescu liviu ms-ninja Data 11 martie 2012 12:14:38
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
#define dim 15005
int v[dim], n, m;
int lsb(int x)
{
	return x&-x;
}

void update(int poz, int val, int semn)
{
	for(;poz<=n;poz+=lsb(poz))
		v[poz]+=(val*semn);
}

void read()
{
	int i, x;
	fin>>n >>m;
	for(i=1;i<=n;++i)
	{
		fin>>x;
		update(i,x,1);
	}
}

int query(int poz)
{
	int sum=0;
	for(;poz;poz-=lsb(poz))
		sum+=v[poz];
	return sum;
}

void solve()
{
	int i, tip, x, y;
	
	for(i=1;i<=m;++i)
	{
		fin>>tip >>x >>y;
		if(tip==0)
			update(x,y,-1);
		else
			fout<<query(y)-query(x-1)<<'\n';
	}
}

int main()
{
	read();
	solve();
	return 0;
}