Cod sursa(job #2449303)

Utilizator LeCapataIustinian Serban LeCapata Data 19 august 2019 11:09:45
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
//https://infoarena.ro/problema/cautbin

#include <fstream>

using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");

int v[100001];

int main()
{
    int n, m, c, x, mij=0;
    in>>n;
    for(int i=1; i<=n; i++)in>>v[i];

    in>>m;
    while(m--)
    {
        in>>c>>x;

        if(c==0)
        {
            int st=1, dr=n;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(v[mij]<=x)st=mij+1;
                else dr=mij-1;
            }

            if(v[mij]>x)mij--;
            if(v[mij]==x)out<<mij<<'\n';
            else out<<"-1"<<'\n';
        }

        else if(c==1)
        {
            int st=1, dr=n;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(v[mij]<=x)st=mij+1;
                else dr=mij-1;
            }

            if(v[mij]>x)mij--;
            out<<mij<<'\n';
        }

        else
        {
            int st=1, dr=n;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(v[mij]>=x)dr=mij-1;
                else st=mij+1;
            }

            if(v[mij]<x)mij++;
            out<<mij<<'\n';
        }
    }

    in.close();
    out.close();
    return 0;
}