Cod sursa(job #2618538)

Utilizator @stefansevastre@Stefan Sevastre @stefansevastre@ Data 25 mai 2020 13:13:28
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
#include <iostream>
#include <fstream>
#define N 100010
int v[N];

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

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 main()
{int n,i,op,nr,m;
    f>>n;
    for(i=1; i<=n; i++)
        f>>v[i];
    f>>m;
    while(m--)
    {
        f>>op>>nr;
        if(op==0)
            g<<Cautare0(1,n,nr)<<endl;
        if(op==1)
            g<<Cautare1(1,n,nr)<<endl;
        if(op==2)
            g<<Cautare2(1,n,nr)<<endl;
    }


    return 0;
}