Cod sursa(job #2395769)

Utilizator mihai123451234MihaiPintilie mihai123451234 Data 2 aprilie 2019 20:53:29
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb

#include <iostream>
#include <fstream>

using namespace std;

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

int v[100005];
int n, i, m, j, a, x, st, dr, mid;
int main()
{
    fin >>n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    fin >>m;
    for (j=1;j<=m;j++)
    {
        fin>>a>>x;
        st=1;
        dr=n;
        if(a==1)
        {
            while(st!=dr)
            {
                mid=(st+dr+1)/2;
                if(v[mid]<=x)
                    st=mid;
                else
                    dr=mid-1;
            }
            fout<<st<<'\n';
        }
        else if(a==0)
        {
            while(st!=dr)
            {
                mid=(st+dr+1)/2;
                if(v[mid]<=x)
                    st=mid;
                else
                    dr=mid-1;
            }
            if(v[st]==x)
                fout<<st<<'\n';
            else
                fout<<"-1"<<'\n';
        }
        else
        {
            while (st!=dr)
            {
                mid=(st+dr)/2;
                if (v[mid]>=x)
                    dr=mid;
                else
                    st=mid+1;
            }
            fout<<st<<'\n';
        }
    }
    return 0;
}