Cod sursa(job #2445660)

Utilizator LORDENVraja Luca LORDEN Data 5 august 2019 09:32:42
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.87 kb
#include <fstream>

using namespace std;
int n,v[100005],m,p,x,y,st,dr,mij,pmax=-1,ok;
int main()
{
    ifstream cin("cautbin.in");
    ofstream cout("cautbin.out");

    cin>>n;

    for(int i=1; i<=n; i++)
        cin>>v[i];

    cin>>m;

    for(int i=1; i<=m; i++)
    {
        cin>>x>>y;

        st=1;
        dr=n;
        ok=0;

        if(x==0)
        {
            while(st<=dr && ok==0)
            {

                mij=(st+dr)/2;

                if(y<v[mij])
                    st=mij+1;

                else if(y>v[mij])
                    dr=mij-1;

                else if(y==v[mij])
                {
                    p=mij;
                    ok=1;
                }

            }

            if(ok==0)
                cout<<-1;

            while(y==v[p])
                p++;

            cout<<p-1<<'\n';
        }

        else if(x==1)
        {
            while(st<=dr && ok==0)
            {

                mij=(st+dr)/2;

                if(y<v[mij])
                    st=mij+1;

                else if(y>v[mij])
                    dr=mij-1;

                else if(y==v[mij])
                {
                    p=mij;
                    ok=1;
                }
            }

            while(y==v[p])
                p++;

            cout<<p-1<<'\n';
        }

        else if(x==2)
        {
            while(st<=dr && ok==0)
            {

                mij=(st+dr)/2;

                if(y<v[mij])
                    st=mij+1;

                else if(y>v[mij])
                    dr=mij-1;

                else if(y==v[mij])
                {
                    p=mij;
                    ok=1;
                }
            }

            while(y==v[p])
                p--;

            cout<<p+1<<'\n';
        }
    }
    return 0;
}