Pagini recente » Cod sursa (job #409567) | Cod sursa (job #3219192) | Cod sursa (job #843766) | Cod sursa (job #372689) | Cod sursa (job #2276814)
#include <iostream>
#include <fstream>
#include <vector>
#define ll int
using namespace std ;
ifstream f ( "cautbin.in" ) ;
ofstream g ( "cautbin.out" ) ;
const int NR = 100005 ;
vector < ll > v ( NR ) ;
ll bs0 ( ll st , ll dr , ll val )
{
if ( st == dr || st + 1 == dr )
{
if ( v [ dr ] == val ) return dr ;
if ( v [ st ] == val ) return st ;
return -1 ;
}
int mid = ( st + dr ) >> 1 ;
if ( val >= v [ mid ] ) return bs0 ( mid , dr , val ) ;
else return bs0 ( st , mid , val ) ;
}
ll bs1 ( ll st , ll dr , ll val )
{
if ( st == dr || st + 1 == dr )
{
return st ;
}
int mid = ( st + dr ) >> 1 ;
if ( val >= v [ mid ] ) return bs1 ( mid , dr , val ) ;
else return bs1 ( st , mid , val ) ;
}
ll bs2 ( ll st , ll dr , ll val )
{
if ( st == dr || st + 1 == dr )
{
return dr ;
}
int mid = ( st + dr ) >> 1 ;
if ( val <= v [ mid ] ) return bs2 ( st , mid , val ) ;
else return bs2 ( mid , dr , val ) ;
}
int main ( ) {
ll n ; f >> n ;
for ( int i = 1 ; i <= n ; ++ i ) f >> v [ i ] ;
ll m ; f >> m ;
for ( ; m ; m -- )
{
ll type , value ; f >> type >> value ;
if ( type == 0 ) g << bs0 ( 1 , n , value ) << "\n" ;
if ( type == 1 ) g << bs1 ( 1 , n , value ) << "\n" ;
if ( type == 2 ) g << bs2 ( 1 , n , value ) << "\n" ;
}
return 0 ; }