Cod sursa(job #748381)

Utilizator DaicuDaicu Alexandru Daicu Data 13 mai 2012 13:44:04
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100000],n,m;
void read(){
	f>>n;
	for(int i=0;i<n;i++)
		f>>a[i];
}
int binary_search0(int x){
	int lo=-1,hi=n,mid;
	while(hi-lo>1){
		mid=(hi+lo)/2;
		if(a[mid]<=x)
			lo=mid;
		else
			hi=mid;
	}
	return lo;
}
int binary_search1(int x){
	int lo=-1,hi=n,mid;
	while(hi-lo>1){
		mid=(hi+lo)/2;
		if(a[mid]<x)
			lo=mid;
		else
			hi=mid;
	}
	return hi;
}
int main(){
	read();
	f>>m;
	int x,y,lo;
	for(int i=1;i<=m;i++){
		f>>x>>y;
		if(x==0){
			lo=binary_search0(y);
			if(lo>=0 && a[lo]==y)
				g<<lo+1<<endl;
			else
				g<<"-1"<<endl;
		}
		if(x==1){
			lo=binary_search0(y);
				g<<lo+1<<endl;
		}
		if(x==2){
			lo=binary_search1(y);
				g<<lo+1<<endl;
		}
	}
	return 0;
}