Cod sursa(job #2540497)

Utilizator BrandonChris Luntraru Brandon Data 7 februarie 2020 11:38:05
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>

using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001],n;

int cerinta1(int x)
{
    int med,ans,st,dr;
    st=0;
    dr=n-1;
    while(st<=dr){
        med=(st+dr)/2;
        if(v[med]<=x)
        {
            ans=med;
            st=med+1;
        }
        else
        {
            dr=med-1;
        }
    }
    return ans;
}
int cerinta2(int x)
{
    int dr,st,med,ans;
    st=0;
    dr=n-1;
    while(st<=dr)
    {
        med=(st+dr)/2;
        if(v[med]>=x)
        {
            ans=med;
            dr=med-1;
        }
        else
        {
            st=med+1;
        }
    }
    return ans;
}
int main()
{
    int x,m,i,prop,a;
    in>>n;
    for(i=0;i<n;i++)
    {
        in>>v[i];
    }
    in>>m;
    for(int p=1;p<=m;p++)
    {
        in>>prop>>x;
        if(prop==1)
        {
            out<<cerinta1(x)+1<<'\n';
        }
        else if(prop==0)
        {
            a=cerinta1(x);
            if(v[a]==x)
                out<<a+1<<'\n';
            else
                out<<-1<<'\n';
        }else if(prop==2)
        {
            out<<cerinta2(x)+1<<'\n';
        }
    }
    return 0;
}