Cod sursa(job #455928)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 14 mai 2010 16:12:49
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<fstream.h>
 ifstream f("cautbin.in");
  ofstream g("cautbin.out");
    int intreb,caut,a[100010],n,i,m;
    int c0(int nr,int in,int sf){
		int m,poz=0;
		while(in<=sf){
			m=(in+sf)/2;
			if(a[m]<nr) in=m+1;
			else
			if(a[m]>nr) sf=m-1;
			else{
				poz=m;
				in=m+1;
			}
		}
		if(poz) return poz;
		return -1;
	}
	int c1(int nr,int in,int sf){
		int m,poz=0;
		while(in<=sf){
			m=(in+sf)/2;
			if(a[m]<=nr){
				poz=m;
				in=m+1;
			}
			else sf=m-1;
		}
		if(poz) return poz;
		return -1;
	}
	int c2(int nr,int in,int sf){
		int m,poz=0;
		while(in<=sf){
			m=(in+sf)/2;
			if(a[m]>=nr){
				poz=m;
				sf=m-1;
			}
			else in=m+1;
		}
		if(poz) return poz;
		return -1;
	}
	int main(){
		f>>n;
		for(i=1;i<=n;++i) f>>a[i];
		f>>m;
		for(i=1;i<=m;++i){
			f>>intreb>>caut;
			if(intreb==0)
		        g<<c0(caut,1,n)<<'\n';
			else
			if(intreb==1) 
				g<<c1(caut,1,n)<<'\n';
			else
			if(intreb==2)
				g<<c2(caut,1,n)<<'\n';
		}
		g.close();
		return 0;
	}