Cod sursa(job #402072)

Utilizator alex@ndraAlexandra alex@ndra Data 23 februarie 2010 13:42:31
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
using namespace std;

int n, m, i, x, tip, poz, a, b, v[100005];

void adauga(int poz, int val)
{
	while (poz <= n)
    {
		v[poz] += val;

		poz += (poz^(poz-1)) & poz;
	}
}

int sum(int poz)
{
	int rez = 0;

	while (poz > 0)
    {
		rez += v[poz];

		poz -= (poz^(poz-1)) & poz;
	}

	return rez;
}



int main()
{
	ifstream f("datorii.in");
	ofstream g("datorii.out");

    f>>n>>m;

	for (i = 1; i <= n; i ++)
    
		{f>>x;
		adauga(i,x);
    }


	for (i = 1; i <= m; i ++)
    {
		f>>tip;

		if (tip == 0)
        {
			f>>poz>>x;

			adauga(poz, -x);
			continue;
		}
		if (tip == 1)
        {
			f>>a>>b;

			g<<sum(b)-sum(a-1)<<"\n";
		}
		
	}

	return 0;
}