Cod sursa(job #562791)

Utilizator Rares95Rares Arnautu Rares95 Data 23 martie 2011 21:51:00
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
	
	# include <fstream>
	using namespace std;
	
	int t, x, n, tip, i;
	int a[ 100001 ];
	
	int cautbin1 ( int x ) {
		int i, cnt = 1 << 17;
		for ( i = 1; cnt; cnt >>= 1 )
			if ( i + cnt <= n )
				if ( a[ i + cnt ] <= x ) i += cnt;
		if ( !tip && a[ i ] != x ) return -1;
		return i;
	}
	
	int cautbin2 ( int x ) {
		int i, cnt = 1 << 17;
		for ( i = n; cnt; cnt >>= 1 )
			if ( i - cnt >= 1 )
				if ( a[ i - cnt ] >= x ) i -= cnt;
		return i;
	}
	
	int main () {
		
		ifstream f ( "cautbin.in" );
		ofstream g ( "cautbin.out");
		
		for ( f >> n, i = 1; i <= n; ++i ) f >> a[ i ];
		
		for ( f >> t; t; --t ) {
			f >> tip >> x;
			if ( tip < 2 ) g << cautbin1 ( x ) << '\n';
			else g <<cautbin2 ( x ) << '\n';
		}
		
		g.close (); 
		return 0;
	}