Cod sursa(job #1248192)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 24 octombrie 2014 19:22:36
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
// datorii.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
#include <fstream>
#define NMAX 15010

using namespace std;

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

int n, m, a[NMAX];

inline int ultim(int x)
{
	return (x ^ (x - 1))&x;
}

void Update(int pozitie, int val)
{
	int i;

	for (; pozitie <= n; pozitie += ultim(pozitie))
		a[pozitie] += val;
}

int Query(int pozitie)
{
	int sum = 0;
	for (; pozitie > 0; pozitie -= ultim(pozitie)) sum += a[pozitie];
	return sum;
}


void Citeste()
{
	int x, i;

	f >> n >> m;

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

void Solve()
{
	int op, x, y;

	while (m--)
	{
		f >> op >> x >> y;
		if (op)  g << Query(y) - Query(x - 1) << "\n";
		else Update(x, -y);
	}
}


int main()
{
	Citeste();
	Solve();
	return 0;
}