Pagini recente » Cod sursa (job #421945) | Cod sursa (job #504978) | Cod sursa (job #1193834) | Cod sursa (job #2251219) | Cod sursa (job #2305492)
#include <fstream>
using namespace std ;
const int NR = 100005 ;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int v [ NR ] ;
int n , q ;
int bs0 ( int val )
{
int i , step ;
for ( step = 1 ; step < n ; step <<= 1 ) ;
for ( i = 0 ; step ; step >>= 1 )
if ( i + step < n && v [ i + step ] <= val )
i += step ;
if ( v [ i ] != val ) return -1 ;
return i ;
}
int bs1 ( int val )
{
int i , step ;
for ( step = 1 ; step < n ; step <<= 1 ) ;
for ( i = 0 ; step ; step >>= 1 )
if ( i + step < n && v [ i + step ] <= val )
i += step ;
return i ;
}
int bs2 ( int val )
{
int i , step ;
for ( step = 1 ; step < n ; step <<= 1 ) ;
for ( i = 0 ; step ; step >>= 1 )
if ( i + step < n && v [ i + step ] < val )
i += step ;
return i + 1 ;
}
int main ()
{
f >> n ;
for ( int i = 1 ; i <= n ; ++ i ) f >> v [ i ] ;
f >> q ;
while ( q -- )
{
int type , value ;
f >> type >> value ;
if ( type == 0 ) g << bs0 ( value ) << "\n" ;
if ( type == 1 ) g << bs1 ( value ) << "\n" ;
if ( type == 2 ) g << bs2 ( value ) << "\n" ;
}
}