Cod sursa(job #1891908)

Utilizator ReeeBontea Mihai Reee Data 24 februarie 2017 14:01:17
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>

using namespace std;

int v[100001] , N , M , intrebare , x;

void CautareBinara0()
{
    int s = 1 , f = N , mijloc , poz = -1;

    while ( s > f )
    {
        mijloc = ( s + f ) / 2;
        if ( x == v[mijloc] )
        {
            for ( int i = mijloc ; i <= N ; ++i )
                if ( v[i] == x )
                    poz = i;
                else
                    break;
        }
        else
            if ( x < v[mijloc] )
                f = mijloc - 1;
            else
                s = mijloc + 1;
    }
    return poz;
}

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");

    fin >> N; // N apoi un sir de N elemente
    for ( int i = 1 ; i <= N ; ++i )
        fin >> v[i];

    fin >> M; // M apoi M linii de 2 elemente fiecare

    for ( int i = 1 ; i <= M ; ++i )
    {
        fin >> intrebare >> x;

        switch ( intrebare )
        {
        case 1:
            CautareBinara1();
            break;
        case 2:
            CautareBinara2();
            break;
        default:
            CautareBinara0();
        }
    }
    return 0;
}