Cod sursa(job #949611)

Utilizator tudorv96Tudor Varan tudorv96 Data 14 mai 2013 13:27:05
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#include <vector>
using namespace std;

#define in "datorii.in"
#define out "datorii.out"
#define N 15005

int aib[N], n, m;

void add (int i, int x) {
	while (i <= n) {
		aib[i] += x;
		i += (i^(i-1)) & i;
	}
}

int query (int i) {
	int s = 0;
	while (i > 0) {
		s += aib[i];
		i -= (i^(i-1)) & i;
	}
	return s;
}

int main () {
	ifstream fin (in);
	fin >> n >> m;
	for (int i = 1; i <= n; ++i) {
		int x;
		fin >> x;
		add (i, x);
	}
	ofstream fout (out);
	for (int i = 0; i < m; ++i) {
		bool type;
		int a, b;
		fin >> type >> a >> b;
		if (!type)
			add (a, -b);
		else
			fout << query (b) - query (a-1) << "\n";
	}
	fcloseall();
	return 0;
}