Cod sursa(job #1773427)

Utilizator MirceaTMircea Timpuriu MirceaT Data 7 octombrie 2016 20:46:08
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <fstream>
using namespace std;

int main()
{
    int n,v[100000]={},i,j,k,a,b,mid,lo,hi;
    ifstream fin ("cautbin.in");
    ofstream fout ("cautbin.out");
    fin>>n;
    for(i=1;i<=n;++i)
    {
        fin>>v[i];
    }
    fin>>k;
    for(j=1;j<=k;++j)
    {
        fin>>a>>b;
        if(a==2)
        {
            lo=1;
                hi=n;
            while(lo<=hi){

            mid=(hi+lo)/2;
            if(b<=v[mid])
            {
                hi=mid-1;
            }
            else
            {
                lo=mid+1;
            }

            }
            fout<<lo<<endl;
        }
        else if(a==1)
        {
            lo=1;
                hi=n;
            while(lo<=hi){

            mid=(hi+lo)/2;
            if(b>=v[mid])
            {
                lo=mid+1;
            }
            else
            {
                hi=mid-1;
            }
            }
            fout<<hi<<endl;
        }
        else
        {
               lo=1;
                hi=n;
            while(lo<=hi){

            mid=(hi+lo)/2;
            if(b>=v[mid])
            {
                lo=mid+1;
            }
            else
            {
                hi=mid-1;
            }
            }
            if(v[hi]==b)
            {
                fout<<hi<<endl;
            }
            else
            {
                fout<<"-1";
            }
        }


    }
}