Cod sursa(job #2829433)

Utilizator ilincap2008Ilinca Popescu ilincap2008 Data 8 ianuarie 2022 16:50:04
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.36 kb
#include <fstream>

using namespace std;
ifstream cin ("cautbin.in");
ofstream cout ("cautbin.out");
int n,m,i,x,l,r,mij,v[100001],e,c,k,ok;
int main()
{
    cin >>n;
    for (i=1; i<=n; i++)
    {
        cin >>v[i];
    }
    cin >>m;
    for (i=1; i<=m; i++)
    {
        cin >>x>>c;
        if (x==0)
        {
            l=1;
            r=n;
            k=0;
            ok=0;
            while(l<=r)
            {
                mij=(l+r)/2;
                if (v[mij]==c)
                {
                    k=mij;
                    ok=1;
                    l=mij+1;
                }
                else if (v[mij]>c)
                {
                    r=mij-1;
                }
                else
                {
                    l=mij+1;
                }
            }
            if (ok!=0)
            {
                cout <<k<<'\n';
            }
            else
            {
                cout <<-1<<'\n';
            }
        }


        if (x==1)
        {
            l=1;
            r=n;
            while(l<=r)
            {
                mij=(l+r)/2;
                if (v[mij]<=c)
                {
                    k=mij;
                    ok=1;
                    l=mij+1;
                }
                else if (v[mij]>c)
                {
                    r=mij-1;
                }
                else
                {
                    l=mij+1;
                }

            }
            if (ok!=0)
            {
                cout <<k<<'\n';
            }
            else
            {
                cout <<-1<<'\n';
            }
        }


        if (x==2)
        {
            l=1;
            r=n;
            while(l<=r)
            {
                mij=(l+r)/2;
                if (v[mij]>=c)
                {
                    k=mij;
                    ok=1;
                    r=mij-1;
                }
                else if (v[mij]>c)
                {
                    r=mij-1;
                }
                else
                {
                    l=mij+1;
                }

            }

            if (ok!=0)
            {
                cout <<k<<'\n';
            }
            else
            {
                cout <<-1<<'\n';
            }
        }
    }
    return 0;
}