Cod sursa(job #632467)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 11 noiembrie 2011 10:51:53
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;

ifstream fin ("datorii.in");
ofstream fout ("datorii.out");

const int valmax = 1005, dim = 15005; 
int aib[dim], N, M;

int mdf (int x)
{
	return x & (-x); 
}

void update (int x, int val)
{
	for (; x <= valmax; x += mdf (x))
		aib[x] += val;
}

int query (int x)
{
	int s = 0;
	for (; x > 0; x -= mdf (x))
		s += aib[x];
	return s;
}

void parc ()
{
	fin >> N >> M;
	for (int i = 1, x; i <= N; i++)
	{
		fin >> x;
		update (i, x);
	}
	for (int i = 1, t, a, b; i <= M; i++)
	{
		fin >> t >> a >> b;
		if (t == 0)
			update (a, -b);
		else
			fout << query (b) - query (a-1) << '\n';
	}	
}

int main ()
{	
	parc ();	
	return 0;
}