Cod sursa(job #201686)

Utilizator maria_pparcalabescu maria daniela maria_p Data 2 august 2008 21:32:22
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio>
long c[15100],n,m,i,op,a,b,s,x;
void modif(long poz,long val,long semn){
	for(;poz<=n;poz+=(poz&(-poz)))
		c[poz]+=(val*semn);
}	
long suma(long dr){
	long s=0;
	for(;dr>0;dr-=(dr&(-dr)))
		s+=c[dr];
	return s;
}
int main(){
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	scanf("%ld%ld",&n,&m);
	for(i=1;i<=n;i++){
		scanf("%ld",&x);
		modif(i,x,1);
	}
	for(;m>0;m--){
		scanf("%ld",&op);
		if(op==0){
			scanf("%ld%ld",&a,&b);
			modif(a,b,-1);
		}
		else{
			scanf("%ld%ld",&a,&b);
			s=suma(b)-suma(a-1);
			printf("%ld\n",s);
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}