Cod sursa(job #416148)

Utilizator funkydvdIancu David Traian funkydvd Data 12 martie 2010 11:46:24
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
#define nmax 15001
using namespace std; 
ifstream f1 ("datorii.in");
ofstream f2 ("datorii.out");
int n,m,i,S,C,ARB[nmax]; 
void Update(int poz,int val)
{
	C=0;
	while(poz<=n)
	{
	ARB[poz]+=val;
	while(!(poz&1<<C)) C++;
	poz+=(1<<C);
	C+=1;
	}
}
int Query(int poz)
{
	C=0,S=0;
	while(poz>0)
	{
		S+=ARB[poz];
		while(!(poz&(1<<C))) C++;
		poz-=(1<<C);
		C+=1;
	}
	return S;
}
	
int main() 
{
	int val,cod,x,y;	
	f1>>n>>m; 
	for(i=1;i<=n;i++) 
	{
	f1>>val;
	Update(i,val);
	}
	for(;m;m--)
	{
		f1>>cod>>x>>y;
		if(!cod)
		{	
			y*=-1;
			Update(x,y);
		}
		else f2<<Query(y)-Query(x-1)<<"\n";
	}
	return 0;
}