Cod sursa(job #948834)

Utilizator SRaduRadu Szasz SRadu Data 11 mai 2013 18:39:54
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

#define MAX 15005
#define op(x) ((x) & (-x))

using namespace std;

int N, M;
int AIB[MAX];

void update(const int &val, int poz) {
	for(; poz <= N; poz += op(poz))
		AIB[poz] += val;
}

int query(int poz) {
	int ans = 0;
	for(; poz; poz -= op(poz)) 
		ans += AIB[poz];
	return ans;
}

int main() {
	ifstream in("datorii.in");
	in >> N >> M;
	for(int i = 1, A; i <= N; i++) {
		in >> A;
		update(A, i);
	} ofstream out("datorii.out");
	for(int i = 1, A, B, C; i <= M; i++) {
		in >> A >> B >> C;
		switch(A) {
			case 0: C *= -1; update(C, B); break;
			case 1: out << query(C) - query(B - 1) << "\n"; break;
		}
	} in.close(); out.close(); 
}