Cod sursa(job #2369262)

Utilizator TudorCristeaCristea Tudor TudorCristea Data 5 martie 2019 22:01:12
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda pregatire_cls10_oji Marime 1.85 kb
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int N,M,a[100001],i,st,dr,mij,x,y;

int main()
{
    fin >> N;
    for (i=1;i<=N;++i)
    {
        fin >> a[i];
    }
    fin >> M;
    for (i=1;i<=M;++i)
    {
        fin >> x >> y;
        st=1;
        dr=N;
        if (x==0)
        {
            while (st<=dr)
            {
                mij=(st+dr)/2;
                if (a[mij]<=y)
                {
                    st=mij+1;
                }
                else
                {
                    dr=mij-1;
                }
            }
            mij=(st+dr)/2;
            if (a[mij]>y)
            {
                --mij;
            }
            if (a[mij]==y)
            {
                fout << mij;
            }
            else
            {
                fout << -1;
            }
        }
        if (x==1)
        {
            while (st<dr)
            {
                mij=(st+dr)/2;
                if (a[mij]<=y)
                {
                    st=mij+1;
                }
                else
                {
                    dr=mij;
                }
            }
            mij=(st+dr)/2;
            if (a[mij]>y)
            {
                --mij;
            }
            fout << mij;
        }
        if (x==2)
        {
            while (st<dr)
            {
                mij=(st+dr)/2;
                if (a[mij]<y)
                {
                    st=mij+1;
                }
                else
                {
                    dr=mij;
                }
            }
            if (a[mij]<y)
            {
                ++mij;
            }
            fout << mij;
        }
        fout << '\n';
    }
    return 0;
}