Cod sursa(job #284272)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 21 martie 2009 14:51:32
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <stdio.h>
#define maxN 15010

int Aib[maxN], N, M;

int lsb (int x) {
	return x & -x;
}

void update (int ind, int val) {
	for (; ind <= N; ind += lsb(ind))
		Aib[ind] -= val;
}

int query (int ind) {
	int sum;
	for (sum = 0; ind; ind -= lsb(ind)) 
		sum += Aib[ind];
	return sum;
}

int main () {
	int i, a, b, x;

	freopen("datorii.in", "r", stdin);
	freopen("datorii.out", "w", stdout);
	
	for (scanf("%d%d", &N, &M), i = 1; i <= N; ++ i) {
		scanf("%d", &x);
		update(i, -x);
	}	
	
	for (; M; M --) {
		scanf("%d%d%d", &x, &a, &b);
		if (x == 0)
			update(a, b);
		else	printf("%d\n", query(b) - query(a - 1));
	}
}