Cod sursa(job #1108272)

Utilizator federerUAIC-Padurariu-Cristian federer Data 15 februarie 2014 15:32:04
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
#define Nmax 15010
#define lsb(x) (x & -x)
using namespace std;

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

int N, M, AIB[Nmax];

void update(int x, int val)
{
	for (int i = x; i <= N; i += lsb(i))
		AIB[i] += val;
		
}

int query(int x)
{
	int res=0;
	for (int i = x; i; i -= lsb(i))
		res += AIB[i];
	return res;
}

int main()
{
	int op, a, b, i;
	fin >> N >> M;
	for (i = 1; i <= N; ++i)
	{
		fin >> a;
		update(i, a);
	}
	for (i = 1; i <= M; ++i)
	{
		fin >> op>>a>>b;
		switch (op)
		{
		case 0: update(a, -b); break;
		case 1: fout << query(b) - query(a - 1) << '\n'; break;
		}
	}
	return 0;
}