Cod sursa(job #1242533)

Utilizator dr_personalityEftime Andrei Horatiu dr_personality Data 14 octombrie 2014 16:49:38
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");

const int nmax = 15000;
long long n, m, aib[nmax], chestie, a, b;

long long zeros(long long x)
{
	return (x ^ (x - 1)) & x;
}

void add(int x, long long val)
{
	for(int i = x; i<=n; i+=zeros(i))
		aib[i] += val;
}

long long calc(long long x)
{
	long long p = 0;
	for(int i = x; i>0; i-=zeros(i))
		p += aib[i];
	return p;
}

int main(){
	int player_unu=0;

	in>>n>>m;
	for(int i = 1; i<=n; i++)
	{
		in>>chestie;
		add(i, chestie);
	}

	for(int i = 0; i<m; i++)
	{
		in>>chestie>>a>>b;
		
		if(chestie==0)
		{
			add(a, -b);
		}
		else
		{
			out<<calc(b) - calc(a - 1)<<'\n';
		}
	}

	return player_unu;
}