Cod sursa(job #1853707)

Utilizator TherevengerkingSurani Adrian Therevengerking Data 21 ianuarie 2017 23:27:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int Nmax=100000+5;
long long st,dr,mid;
int a[Nmax];
int n,m;
int main()
{
    fin>>n;
    for(int i=1;i<=n;++i)
        fin>>a[i];
    sort(a+1,a+n+1);
    fin>>m;
    for(int i=1,x,y;i<=m;++i)
    {
        fin>>x>>y;
        st=0;
        dr=n+1;
        if(x==0 or x==1)
        {
            while(dr-st>1)
            {
                mid=(dr+st)/2;
                if(a[mid]>y)
                    dr=mid;
                else st=mid;
            }
            if(x==0)
            {
                if(a[dr-1]!=y)fout<<"-1"<<'\n';
                else fout<<dr-1<<'\n';
            }
            else fout<<dr-1<<'\n';
        }
        else
        {
            while(dr-st>1)
            {
                mid=(dr+st)/2;
                if(a[mid]<y)
                    st=mid;
                else dr=mid;
            }
            fout<<dr<<'\n';
        }
    }
    return 0;
}