Cod sursa(job #989351)

Utilizator meehighStancu Mihai meehigh Data 25 august 2013 15:29:48
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

#define NMAX 15010

int tree[NMAX];
int step[NMAX];

void update(int i, int n, int val){
	while (i <= n){
		tree[i] += val;
		i += -i & i;
	}
}

long read(int i){
	long sum = 0;
	while (i > 0){
		sum += tree[i];
		i -= -i & i;
	}
	return sum;
}

int main(){

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

	int n,m,a;
	fin >> n >> m;

	for (int i=1; i<=n; i++){
		fin >> a;
		update(i,n,a);
	}
		
	int o,t,v,p,q;

	for (int i=0; i<m; i++){
		fin >> o;

		if (o==0){
			fin >> t >> v;
			update(t,n,-v);
		}
		else {
			fin >> p >> q;
			fout << read(q) - read(p-1) << endl;
		}
	}

	fin.close();
	fout.close();

	return 0;
}