Cod sursa(job #562793)

Utilizator Rares95Rares Arnautu Rares95 Data 23 martie 2011 21:57:35
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
	
	# include <fstream>
	using namespace std;
	
	int a[ 100001 ];

	
	int main () {
		int t, x, n, tip, i, cnt;
		
		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 ) {
				for ( i = 1, cnt = 1 << 17; cnt; cnt >>= 1 )
					if ( i + cnt <= n )
						if ( a[ i + cnt ] <= x ) i += cnt;
				if ( !tip && a[ i ] != x ) g << "-1\n";
				else g << i << '\n';
			}
			else {
				for ( i = n, cnt = 1 << 17; cnt; cnt >>= 1 )
					if ( i - cnt >= 1 )
						if ( a[ i - cnt ] >= x ) i -= cnt;
				g << i << '\n';
			}
		}
		
		g.close (); 
		return 0;
	}