Cod sursa(job #1774258)

Utilizator OlivianOlivian Dan Cretu Olivian Data 8 octombrie 2016 18:57:08
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
using namespace std;
long long n,v[100020],hi,lo,mid;
long long cautbin(long long b)
{
     lo=1;
     hi=n;
            while(lo<=hi){

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

int main()
{
    long long h,i,j,k,a,b,m;
    ifstream fin ("cautbin.in");
    ofstream fout ("cautbin.out");
    fin>>n;
    for(i=1;i<=n;++i)
    {
        fin>>v[i];
    }
    fin>>m;
    for(i=1;i<=m;++i)
    {
        fin>>a>>b;
       if(a==1)
       {
           fout<<cautbin(b)<<endl;
       }
       else if(a==2)
       {
           fout<<cautbin(b-1)+1<<endl;
       }
       else
       {
           h=cautbin(b);
           if(v[h]==b)
           {
               fout<<h<<endl;
           }
           else
           {
               fout<<"-1"<<endl;
           }
       }


    }
    return 0;
}