Cod sursa(job #697693)

Utilizator alexandrul_21Niculescu Mihai alexandrul_21 Data 29 februarie 2012 10:36:25
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
struct nod{
	int nr;
	nod *st,*dr;
}*r;
int n,m;
void insert(nod *&r,int nr){
	if(r==0){
		r=new nod;
		r->nr=nr;
		r->st=0;
		r->dr=0;
	}
	else
		if(nr<r->nr)
			insert(r->st,nr);
		else
			if(nr>r->nr)
				insert(r->dr,nr);
}
int find(nod *r,int x,int y){
	if(r){
		if(x<=r->nr){
			if(r->st)
				return find(r->st,x,y);
			return r->nr;
		}
		return find(r->dr,x,y);
	}
}
void read(){
	FILE *f=fopen("rmq.in","r");
	fscanf(f,"%d %d\n",&n,&m);
	int i,x,y;
	for(i=1;i<=n;i++){
		fscanf(f,"%d\n",&x);
		insert(r,x);
	}
	for(i=1;i<=m;i++){
		fscanf(f,"%d %d\n",&x,&y);
		printf("%d\n",find(r,x,y));
	}
	fclose(f);
}
void write(nod *r){
	if(r){
		write(r->st);
		printf("%d ",r->nr);
		write(r->dr);
	}
}

int main(){
	freopen("rmq.out","w",stdout);
	read();
	fclose(stdout);
	return 0;
	
}