Cod sursa(job #2644357)

Utilizator DariaCretuCretu Daria Stefana DariaCretu Data 24 august 2020 12:38:48
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.42 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001], mi, N, i, x, val, M;

void Cautare(int x, int st, int dr)
{
    while( st <= dr )
    {
        mi = ( st + dr )/2;
        if( v[mi] == x )
            break;

        else if( v[mi] > x )
            dr = mi - 1;
        else if( v[mi] < x )
            st = mi + 1;
    }
}

int main()
{
    f >> N;
    for( i=1; i<=N; ++i )
        f >> v[i];
    f >> M;
    for( i=1; i<=M; ++i )
    {
        f >> val >> x;
        if( val == 0 )
        {
            Cautare(x,1,N);
            if ( v[mi] == x )
            {
                while( v[mi+1] == v[mi] )
                    mi++;
                g << mi << '\n';
            }
            else g << -1 <<'\n';
        }
        if( val == 1)
        {
            Cautare(x,1,N);
            if( v[mi] == x )
            {
                while( v[mi+1] == v[mi] )
                    mi++;
            }
            else if( v[mi] > x )
                mi--;
            g << mi << '\n';
        }
        if( val == 2)
        {
            Cautare(x,1,N);
            if( v[mi] == x )
            {
                while( v[mi-1] == v[mi] )
                    mi--;
            }
            else if( v[mi] < x )
                mi++;
            g << mi << '\n';
        }
    }
    return 0;
}