Cod sursa(job #295207)

Utilizator BaduBadu Badu Badu Data 3 aprilie 2009 08:31:03
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<stdio.h>
#define N 15100
FILE *f,*g;
int n,m ;
int a[N];

void update(int poz,int val){

	for(; poz<=n ; poz += (poz&(poz-1))^poz )
		a[poz]+=val;
}

long suma(int poz){
	long sum=0;

	for(; poz ; poz -= (poz&(poz-1))^poz )
		sum+=a[poz];

	return sum;
}

int main(){

	f = fopen("datorii.in","r");
	g = fopen("datorii.out","w");

	fscanf(f,"%d%d",&n,&m);
	int i,x,o,y;

	for(i=1;i<=n;i++){
		fscanf(f,"%d",&x);
		update(i,x);
	}

	for( ; m-- ; ){

		fscanf(f,"%d%d%d",&o,&x,&y);
		if(!o) update(x,-y);
		else fprintf(g,"%ld\n",suma(y) - suma(x-1));

	}

	return 0;
}