Cod sursa(job #2052446)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 30 octombrie 2017 16:49:45
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.56 kb
#include <fstream>

using namespace std;

ifstream cin ("cautbin.in") ;
ofstream cout ("cautbin.out") ;

int main()
{

    int n, m, x, y, val =-1, md ;
    cin>>n ;
    int v [ n + 1 ] ;
    for( int i = 1 ; i <= n ; i ++ )
        cin >> v [ i ] ;

    cin >> m ;
    int st = 1, dr = n ;
    for ( int i = 1 ; i <= m ; i ++ )
    {
        val = -1 ;
        st = 1;
        dr = n;
        cin >> y >> x ;
        if( y == 0 )
        {
            while( st <= dr )
            {
                md = ( st + dr ) / 2 ;
                if( x > v [ md ] )
                    st = md + 1 ;
                else if ( x < v [ md ] )
                    dr = md - 1 ;
                else
                {
                    val = md ;
                    st = md + 1 ;
                }
            }
        }
        if(y==1)
        {
            while ( st <= dr )
            {
                md = ( st + dr ) / 2 ;
                if( x >= v [ md ] )
                {
                    val = md ;
                    st = md + 1 ;
                }
                else
                    dr = md - 1 ;
            }
        }
        if( y == 2 )
        {
            while ( st <= dr )
            {
                md = ( st + dr ) / 2 ;
                if( x <= v [ md ] )
                {
                    val = md ;
                    dr = md - 1 ;
                }
                else
                    st = md + 1 ;
            }
        }
        cout << val << "\n" ;
    }
    return 0;
}