Cod sursa(job #2412973)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 22 aprilie 2019 18:44:02
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <fstream>

using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");

int n,m,i;
int tip,val;
int v[100001];

int cb0(int val)
{
    int st=1,dr=n,mij,poz=-1;
    while (st<=dr)
    {
        mij=(st+dr)/2;
        if (v[mij]==val)
        {
            poz=mij;
            st=mij+1;
        }
        else
            if (v[mij]<val)
                st=mij+1;
            else
                dr=mij-1;
    }
    return poz;
}

int cb1(int val)
{
    int st=1,dr=n,mij,poz=-1;
    while (st<=dr)
    {
        mij=(st+dr)/2;
        if (v[mij]<=val)
        {
            poz=mij;
            st=mij+1;
        }
        else
            dr=mij-1;
    }
    return poz;
}

int cb2(int val)
{
    int st=1,dr=n,mij,poz=-1;
    while (st<=dr)
    {
        mij=(st+dr)/2;
        if (v[mij]>=val)
        {
            poz=mij;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
    return poz;
}

int main()
{
    f>>n;
    for (i=1;i<=n;i++)
        f>>v[i];
    f>>m;
    for (i=1;i<=m;i++)
    {
        f>>tip>>val;
        if (tip==0)
            g<<cb0(val)<<"\n";
        else if (tip==1)
            g<<cb1(val)<<"\n";
        else if (tip==2)
            g<<cb2(val)<<"\n";
    }
    return 0;
}