Cod sursa(job #1067787)

Utilizator andy1496Casu-Pop Andrei andy1496 Data 27 decembrie 2013 15:19:56
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
using namespace std;

int n, m, j, ind;
bool op;
long a, s, aib[15002], val;

int zeros (int poz) {

	return ( poz ^ ( poz - 1 ) ) & poz;

}

void add (int poz, long q) {
	int i;
	for (i = poz; i <= n; i += zeros(i)) {
		aib[i] += q;
	}
}

long sum(int poz) {

	int i;
	long v = 0;
	for (i = poz; i > 0; i -= zeros(i)) {
		v += aib[i];
	}
	return v;
}

int main() {

	freopen("datorii.in", "r", stdin);
	freopen("datorii.out", "w", stdout);


	scanf("%ld %ld", &n, &m);

	for (j = 1; j <= n; j++) {
		scanf("%ld", &a);
		add(j, a);
	}

	for (j = 1; j <= m; j++) {

		scanf("%d %d %ld", &op, &ind, &val);

		if (op == 0) {
			add(ind, -val);
		}

		else {
			printf("%ld\n", sum(val) - sum(ind-1));
		}

	}


	return 0;
}