Pagini recente » Cod sursa (job #2808907) | Cod sursa (job #436611) | Cod sursa (job #1084975) | Cod sursa (job #2489551) | Cod sursa (job #2276791)
#include <fstream>
#include <vector>
using namespace std ;
ifstream f ( "cautbin.in" ) ;
ofstream g ( "cautbin.out" ) ;
const int NR = 100005 ;
vector < long long > v ( NR ) ;
int bs0 ( int st , int dr , int val )
{
if ( st == dr && v [ st ] == val ) return st ;
if ( st == dr ) return -1 ;
int mid = ( st + dr ) >> 1 ;
if ( val >= v [ mid ] ) return bs0 ( mid , dr , val ) ;
else return bs0 ( st , mid - 1 , val ) ;
}
int bs2 ( int st , int dr , int val )
{
if ( st == dr ) return st ;
int mid = ( st + dr ) >> 1 ;
if ( val <= v [ mid ] ) return bs2 ( st , mid , val ) ;
else return bs2 ( mid + 1 , dr , val ) ;
}
int bs1 ( int st , int dr , int val )
{
if ( st == dr ) return st ;
int mid = ( st + dr ) >> 1 ;
if ( val >= v [ mid ] ) return bs1 ( mid , dr , val ) ;
else return bs1 ( st, mid - 1 , val ) ;
}
int main ()
{
int n ; f >> n ;
for ( int i = 1 ; i <= n ; ++ i ) f >> v [ i ] ;
int m ; f >> m ;
while ( m -- )
{
long long 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 ;
}