Cod sursa(job #399864)

Utilizator cezyGrigore Cezar cezy Data 21 februarie 2010 10:18:17
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<fstream>
using namespace std;
#define zeros(x) ((x^(x-1))&x)
#define nmax 15005
int aib[nmax];
int n,m;
void update(int poz,int val)
{
	int i;
	for(i=poz;i<=n;i+=zeros(i))
		aib[i]+=val;
}
int suma(int poz)
{
	int i,s=0;;
	for(i=poz;i>0;i-=zeros(i))
		s+=aib[i];
	return s;
}
int main()
{
	int i,j,t,c,p,q;
	ifstream fin("datorii.in");
	ofstream fout("datorii.out");
	fin>>n>>m;
	for(i=1;i<=n;i++)
	{
		fin>>t;
		update(i,t);
	}
	for(i=1;i<=m;i++)
	{
		fin>>c>>p>>q;
		if(c==0)
			update(p,-q);
		else 
			fout<<suma(q)-suma(p-1)<<"\n";
	}
	return 0;
}