Cod sursa(job #431048)

Utilizator nandoLicker Nandor nando Data 31 martie 2010 16:52:59
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>

FILE* fin=fopen("datorii.in","r");
FILE* fout=fopen("datorii.out","w");

#define MAX 16000
#define zero(x) (((x^(x-1))&x))
int c[MAX],n,m;

void update(int ind,int val){
	while(ind<=n){
		c[ind]+=val;
		ind+=zero(ind);
	}
}
int query(int ind){
	int s=0;
	while(ind>0){
		s+=c[ind];
		ind-=zero(ind);
	}
	return s;
}

int main(){
	int d,op,a,b;
	fscanf(fin,"%d %d\n",&n,&m);
	for(int i=1;i<=n;i++){
		fscanf(fin,"%d ",&d);
		update(i,d);
	}
	for(int i=0;i<mi++){
		fscanf(fin,"%d %d %d\n",&op,&a,&b);
		if(op==0){
			update(a,-b);
		}else{
			fprintf(fout,"%d\n",query(b)-query(a-1));
		}
	}
	fclose(fin);
	fclose(fout);
	return 0;
}