Cod sursa(job #2699742)

Utilizator doruliqueDoru MODRISAN dorulique Data 25 ianuarie 2021 19:08:41
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.38 kb
#include <iostream>
#include <fstream>
using namespace std;

int a[100001];

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    int n, m,  x, y, li, lf, mij;
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>a[i];
    fin>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y;
        if(x==0)
        {
            li=1, lf=n;
            mij=(li+lf)/2;
            while(li<=lf)
            {
                if(y>=a[mij])
                    li=mij+1;
                else
                    lf=mij-1;
                mij=(li+lf)/2;
            }
            if(a[lf]==y)
                fout<<lf<<'\n';
            else
                fout<<-1<<'\n';
        }
        if(x==1)
        {
            li=1, lf=n;
            mij=(li+lf)/2;
            while(li<=lf)
            {
                if(y>=a[mij])
                    li=mij+1;
                else
                    lf=mij-1;
                mij=(li+lf)/2;
            }
            fout<<lf<<'\n';
        }
        if(x==2)
        {
            li=1,lf=n;
            mij=(li+lf)/2;
            while(li<=lf)
            {
                if(y<=a[mij])
                    lf=mij-1;
                else
                    li=mij+1;
                mij=(li+lf)/2;
            }
            fout<<li<<'\n';
        }
    }
    return 0;
}