Cod sursa(job #2276791)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 5 noiembrie 2018 13:13:12
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.4 kb
#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 ;
}