Cod sursa(job #772806)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 30 iulie 2012 21:29:03
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<iostream>
#include<fstream>

using namespace std;

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

int AIB[15010], M, N;

inline int lsb(int x)
{
	return ( x & (-x) );
}

void update(int poz, int val)
{
	while(poz <= N){
		AIB[poz] += val;
		poz += lsb(poz);
	}
}

int query(int poz)
{
	int s = 0;
	
	while(poz){
		s += AIB[poz];
		poz -= lsb(poz);
	}
	
	return s;
}

int main()
{
	int i, tip, x, y;
	
	in >> N >> M;
	
	for(i = 1; i <= N; ++i){
		in >> x;
		update(i, x);
	}
	
	while(M--){
		in >> tip >> x >> y;
		
		if(tip)
			out << query(y) - query(x - 1) << "\n";
		else
			update(x, -y);
	}
	
	return 0;
}