Cod sursa(job #2623181)

Utilizator paulconst1Constantinescu Paul paulconst1 Data 2 iunie 2020 18:32:31
Problema Cautare binara Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[100000];

int Cautare0(int st, int dr, int k)
{
    int mij;

    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]<=k)
            st=mij+1;
        else
            dr=mij-1;
    }
    mij=(st+dr)/2;

    if(v[mij]>k)
        mij--;
    if(v[mij]==k)
        return mij;
    return -1;
}

int Cautare1(int st, int dr, int k)
{
    int mij;

    while(st<dr)
    {
        mij=(st+dr)/2;
        if(v[mij]<=k)
            st=mij+1;
        else
            dr=mij;
    }

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

    mij=(st+dr)/2;
    if(v[mij]<k)
        ++mij;
    return mij;
}

int i, n, m, op, nr;

int main ()
{
    fin>>n;
    for (i = 1; i <= n;i++)
        fin>>v[i];
    fin>>m;
    while(m>=1)
    {
        fin>>op>>nr;
        if(op==0)
            fout<<Cautare0(1, n, nr)<<'\n';
        if(op==1)
            fout<<Cautare1(1, n, nr)<<'\n';
        if(op==2)
            fout<<Cautare2(1, n, nr)<<'\n';
        m--;
    }
    exit(0);
}