Cod sursa(job #1415600)

Utilizator CollermanAndrei Amariei Collerman Data 5 aprilie 2015 15:20:21
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include<fstream>

using namespace std;

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

const int MMAX = 100001;
int v[MMAX], n;

int bin1(int x)
{
    int ls, ld, mij;

    ls=1;
    ld=n;

    while(ls<=ld)
    {
        mij = ls + (ld - ls)/2;
        if( x >= v[mij] )
        {
            ls = mij + 1;
        }
        else
        {
            ld = mij - 1;
        }
    }
    return ld;
}

int bin2(int x)
{
    int ls, ld, mij;

    ls=1;
    ld=n;

    while(ls<=ld)
    {
        mij = ls + (ld - ls)/2;
        if( x > v[mij] )
        {
            ls = mij + 1;
        }
        else
        {
            ld = mij - 1;
        }
    }
    return ls;
}

int main()
{
    int m, intreb, b, j;

    fin>>n;
    for(j=1; j<=n; j++)
    {
        fin>>v[j];
    }
    fin>>m;
    for(j=1; j<=m; j++)
    {
        fin>>intreb>>b;
        if(intreb == 0)
        {
            if( v[bin1(b)] != b ) fout<<-1<<"\n";
            else fout<<bin1(b)<<"\n";
        }
        else if(intreb == 1)
        {
            if( v[bin1(b)] != b ) fout<<-1<<"\n";
            else fout<<bin1(b)<<"\n";
        }
        else
        {
            fout<<bin2(b)<<"\n";
        }
    }
    return 0;
}