Cod sursa(job #2492967)

Utilizator Andrei2313Avram Andrei Andrei2313 Data 15 noiembrie 2019 18:36:45
Problema Cautare binara Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100001],n,m,a,b,i;
int cb1( int b, int n, int v[])
{
    int st=1,dr=n,mij;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (v[mij] <= b)
            st = mij + 1;
        else
            dr = mij - 1;
    }
    mij = (st + dr) / 2;
    if(v[m]>b)
        mij--;
    if (v[mij]==b)
        return mij;
    return -1;
}
int cb2( int b, int n, int v[])
{
    int st=1,dr=n,mij;
    while (st < dr)
    {
        mij = (st + dr) / 2;
        if (v[mij] <= b)
            st = mij + 1;
        else
            dr = mij;
    }
    mij = (st + dr) / 2;
    if(v[mij]>b)
        mij--;
    return mij;
}
int cb3( int b, int n, int v[])
{
    int st=1,dr=n,mij;
    while (st < dr)
    {
        mij = (st + dr) / 2;
        if (v[mij] < b)
            st = mij + 1;
        else
            dr = mij;
    }
    mij = (st + dr) / 2;
    if(v[mij]<b)
        mij++;
    return mij;
}
int main()
{
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>v[i];
    fin>>m;
    for(i=1; i<=m; i++)
    {
        fin>>a>>b;
        if(a==0)
            fout<<cb1(b,n,v)<<"\n";
        else if(a==1)
            fout<<cb2(b,n,v)<<"\n";
        else
            fout<<cb3(b,n,v)<<"\n";
    }
    return 0;

}