Cod sursa(job #1248168)

Utilizator andreas.chelsauAndreas Chelsau andreas.chelsau Data 24 octombrie 2014 19:08:33
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
using namespace std;
int a[15005],n,m;

void add(int i, int x){
	for(; i <= n; i += (i & -i)){
		a[i] += x;
	}

}
void update(int i, int x){
	for(; i <= n; i += (i & -i)){
		a[i] -= x;
	}

}
int query(int i){
	int sum = 0;
	for(; i > 0; i -= (i & -i))
		sum += a[i];
	return sum;

}
void query(int s, int t){
	cout << query(t) - query(s - 1) << '\n';
}

int main(){
	freopen("datorii.in", "r", stdin);
	freopen("datorii.out", "w", stdout);
	cin >> n >> m;
	for(int i = 1; i <= n; i++){
		int v;
		cin >> v;
		add(i,v);
	}
	for(int i = 0; i < m; i++){
		int t,a,b;
		cin >> t >> a >> b;
		if(t == 0)
			update(a,b);
		if(t == 1)
			query(a,b);

	}


return 0;
}