Cod sursa(job #1248207)

Utilizator andreas.chelsauAndreas Chelsau andreas.chelsau Data 24 octombrie 2014 19:33:34
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 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){
	printf("%d\n",query(t) - query(s - 1));
}

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

	}


return 0;
}