Cod sursa(job #2592830)

Utilizator Turturica_DorinTurturica Dorin Turturica_Dorin Data 2 aprilie 2020 15:00:24
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");

#define nmax 100005

int n, i, v[ nmax ], logn, lg, tip, x, m;

int main ()
{
    fin >> n;
    for( i = 1; i <= n; i++ )
        fin >> v[ i ];
    for( logn = 1; logn < n; logn = logn << 1 );
    for ( fin>>m; m; m-- )
    {
        fin>> tip >> x;
        if ( tip <= 1 )
        {
            for ( i = 1, lg = logn; lg; lg = lg >> 1 )
                if ( i + lg <= n && v[ i + lg ] <= x )
                    i += lg;
            if ( tip == 1 )
                fout<< i << '\n';
            else if ( x == v[ i ] )
                fout<< i << '\n';
            else
                fout<< -1 << '\n';
        }
        else if ( tip == 2 )
        {
            for ( i = n, lg = logn; lg; lg = lg >> 1 )
                if ( i - lg >= 1 && v[ i - lg ] >= x )
                    i -= lg;
            fout<< i <<'\n';
        }
    }
}