Cod sursa(job #428034)

Utilizator horeste12Stoianovici Horatiu Andrei horeste12 Data 28 martie 2010 18:32:45
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
#include<cstdio>
using namespace std;

#define zeros(x) ((x^(x-1))&x)
ifstream f("datorii.in");
FILE *g;

int aib[16000],a,i,j,n,m,p,q,o;

void add(int x, int quant)
{
	for(int ii=x;ii<=n;ii+=zeros(ii))
		aib[ii]+=quant;
}

int compute(int x)
{
	int rez=0;
	for(int ii=x;ii>0;ii-=zeros(ii))
		rez+=aib[ii];
	return rez;
}

int main()
{
	f>>n>>m;
	g=fopen("datorii.out","w");
	for(i=1;i<=n;i++)
	{	
		f>>a;
		add(i,a);
	}
	for(i=1;i<=m;i++)
	{
		f>>o;
		if(o)
		{
			f>>p>>q;
			fprintf(g,"%d\n",compute(q)-compute(p-1));
		}
		else
		{
			f>>p>>q;
			add(p,-q);
		}
	}
	fclose(g);
	f.close();
	return 0;
}