Cod sursa(job #2828374)

Utilizator velciu_ilincavelciu ilinca velciu_ilinca Data 7 ianuarie 2022 10:10:28
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>

using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100005];
int cautbin01(int v[],int x,int n)
{
    int rasp=-1,st=1,dr=n;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(v[mij]<=x)
        {
            rasp=mij;
            st=mij+1;
        }
        else
            dr=mij-1;
    }
    return rasp;
}
int cautbin2(int v[],int x,int n)
{
    int rasp=-1,st=1,dr=n;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(v[mij]>=x)
        {
            rasp=mij;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
    return rasp;
}
int main()
{
    int n,m,val,x,rasp;
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    in>>m;
    for(int i=1;i<=m;i++)
    {
        in>>val>>x;
        if(val==2)
            out<<cautbin2(v,x,n)<<'\n';
        if(val==1)
            out<<cautbin01(v,x,n)<<'\n';
        if(val==0)
        {
            rasp=cautbin01(v,x,n);
            if(x==v[rasp])
                out<<rasp<<'\n';
            else
                out<<"-1"<<'\n';
        }


    }
    return 0;
}