Cod sursa(job #810572)

Utilizator toranagahVlad Badelita toranagah Data 10 noiembrie 2012 15:49:04
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
using namespace std;
const int MAX_N = 15100;
ifstream fin("datorii.in");
ofstream fout("datorii.out");

int aib[MAX_N];
void update(int pos, int val);
int query(int pos);
int N, M;


int main() {
	fin >> N >> M;
	for (int i = 1; i <= N; ++i) {
		int a;
		fin >> a;
		update(i, a);
	}
	for (int i = 1; i <= M; ++i) {
		int act, a, b;
		fin >> act >> a >> b;
		if (act == 0) {
			update(a, -b);
		} else {
			fout << query(b) - query(a-1) << '\n';
		}
	}
}

void update(int pos, int val) {
	for (int i = pos; i <= N; i += (i & -i)) {
		aib[i] += val;
	}
}

int query(int pos) {
	int result = 0;
	for (int i = pos; i > 0; i -= (i & -i)) {
		result += aib[i];
	}
	return result;
}