Cod sursa(job #1401809)

Utilizator AndreiBarbutaAndrei Barbuta AndreiBarbuta Data 26 martie 2015 09:58:04
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <algorithm>

#define IN "cautbin.in"
#define OUT "cautbin.out"

const int MAX = 100015 ;

using namespace std;

ifstream fin ( IN ) ;
ofstream fout ( OUT ) ;

int v [ MAX ] , n ;

int main()
{
    fin >> n ;
    for ( register int i = 1 ; i <= n ; ++ i )
        fin >> v [ i ] ;
    int m ;
    fin >> m ;
    for ( ; m ; -- m ){
        int x , y ;
        fin >> x >> y ;
        if ( !x ){
            int ub = upper_bound ( v + 1 , v + n + 1 , y ) - v - 1 ;
            if ( ub <= n and ub >= 1 and v [ ub ] == y )
                fout << ub << '\n' ;
            else fout << "-1" << '\n' ;
        }
        if ( x == 1 ){
            int lb = lower_bound ( v + 1 , v + n + 1 , y + 1 ) - v - 1 ;
            fout << lb << '\n' ;
        }
        if ( x == 2 ){
            int ubb = upper_bound ( v + 1 , v + n + 1 , y - 1 ) - v ;
            fout << ubb << '\n' ;
        }
    }
    return 0;
}