Cod sursa(job #2290743)

Utilizator larian_baleaBalea Larian larian_balea Data 26 noiembrie 2018 21:56:30
Problema Cautare binara Scor 40
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<<endl;
        }
        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<<endl;
            else
                fout<<"-1"<<endl;
        }
        else
        {
            while (st!=dr)
            {
                mid=(st+dr)/2;
                if (v[mid]>=x)
                    dr=mid;
                else
                    st=mid+1;
            }
            fout<<st<<endl;
        }
    }
    return 0;
}