Cod sursa(job #733886)

Utilizator robertpoeRobert Poenaru robertpoe Data 13 aprilie 2012 10:06:51
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
#define lsb(x) (x)&((x)^((x)-1))
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int s[15002],n,m;
int sum(int start, int end)
{ 
	int sum=0, slow=0, i;
	for(i=end;i;i-=lsb(i))
		sum+=s[i];
	for(i=start-1;i;i-=lsb(i))
		slow+=s[i];
	return sum-slow;
}
void mod(int poz, int val)
{
	int i;
	for(i=poz;i<=n;i+=lsb(i))
		s[i]-=val;
}
int main()
{
	int a,b,op,i;
	f>>n>>m;
	for(i=1;i<=n;i++) 
	{ 
		f>>a;
		mod(i,-a);
	}
	for(i=0;i<m;i++)
	{ 
		f>>op>>a>>b;
		if(!op)
			mod(a, b);
		else 
			g<<sum(a,b)<<"\n";
	}
	return 0;
}