Cod sursa(job #93912)

Utilizator girl_styleBianca Boeriu girl_style Data 20 octombrie 2007 19:10:30
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>

long m,n,c[15000];

void pune(int i, int aux){
	while (i<=n){
		c[i]+=aux;
		i+=(i^(i-1)&i);
	}
}

void citire(){
	int aux;
	scanf("%ld%ld",&n,&m);
	for (int i=1; i<=n; i++){
		scanf("%d",&aux);
		pune(i,aux);
	}
	
}


int interogare(int x){
	long s;
    s=0;
	while (x>0){
		s+=c[x];
		x-=(x^(x-1)&x);
	}
	return s;
}

void calc(){
	int p,x,y;
	long w;
	for (int i=1; i<=m; i++){
		scanf("%d%d%d",&p,&x,&y);
		if (p==1) {
            w=interogare(y)-interogare(x-1); 
			printf("%ld\n",w);			
		}

				
		else
			pune(x,-y);
	}
}

int main(){
	freopen("datorii.in","r",stdin);
	freopen("datorii.out","w",stdout);
	citire();
	calc();
	fclose(stdin);
	fclose(stdout);
	return 0;
}