Cod sursa(job #1733429)

Utilizator patcasrarespatcas rares danut patcasrares Data 24 iulie 2016 17:56:50
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
using namespace std;
ifstream fi("datorii.in");
ofstream fo("datorii.out");
int F[15001],N,M,i,x,q,st,dr;
int tip,poz,v;
void update(int poz, int v)
{
	while (poz<=N)
	{
		F[poz]+=v;
		poz=poz+(poz&(poz^(poz-1)));
	}
}

int f(int p)
{
	int rez;
	rez=0;
	while (p>0)
	{
		rez=rez+F[p];
		p=p-(p&(p^(p-1)));
	}
	return rez;
}

int main()
{
	fi>>N>>M;
	for (i=1;i<=N;i++)
	{
		fi>>x;
		update(i,x);
	}
	for (q=1;q<=M;q++)
	{
		fi>>tip;
		if (tip==0)
		{
			fi>>poz>>v;
			update(poz,-v);
		}
		else
		{
			fi>>st>>dr;
			fo<<f(dr)-f(st-1)<<"\n";
		}
	}
	fi.close();
	fo.close();
	return 0;
}