Cod sursa(job #2454188)

Utilizator lucian2015blaugranadevil lucian2015 Data 7 septembrie 2019 17:09:15
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>


using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");


void cautbin0(int *vect, int n, int y){
	int hi, lo, mid;
	hi = n+1;
	lo = 0;
	while ( hi - lo > 1){
		mid = ( hi + lo )/2;
			if( vect[mid] > y )
				hi = mid;
			else
				lo = mid;
	}
	if( vect[lo] != y  ||  hi == n+1  )
		g << -1;
	else
		g << lo<<"\n";

}

void cautbin1(int *vect, int n, int y){
	int hi, lo, mid;
	hi = n+1;
	lo = 0;
	while ( hi - lo > 1){
		mid = ( hi + lo )/2;
			if( vect[mid] > y )
				hi = mid;
			else
				lo = mid;
	}
		g << lo<<"\n";

}
void cautbin2(int *vect, int n, int y){
	int hi, lo, mid;
	hi = n;
	lo = -1;
	while ( hi - lo > 1){
		mid = ( hi + lo )/2;
			if( vect[mid] < y )
				lo = mid;
			else
				hi = mid;
	}
		g<< hi<<"\n";

}




int main(){
 int *vect, n, cerinte, i, x, y;
 f >> n;
 vect = new int[n+1];
 for( i = 1; i <= n; i++){
 	f >> vect[i];
 }
 f >> cerinte;
 for( i = 1; i <= cerinte; i++){
 	f >> x >> y;
 	if( x == 0 ) {
 		cautbin0(vect, n, y);
 	}
 	else if( x == 1 ){
 		cautbin1(vect, n, y);
 	}
 	else if( x == 2 ){
 		cautbin2(vect, n, y);
 	}

 }

}