Cod sursa(job #1508175)

Utilizator adu18sptAndrei Mircea adu18spt Data 22 octombrie 2015 13:08:22
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m,a,b,v[100001],i,j;
int cautbin(int val)
{
    int step=(1<<18), start = 0;
    for(;step;step>>=1)
    {
        int index=step+start;
        if(index>n) continue;
        if(v[index]<=val)
        start=index;
    }
    return start;
}
int main()
{
    fin>>n;

    for(i=0;i<=n;i++)
    {
        fin>>v[i];
    }

    fin>>m;

    for(j=0;j<=m;j++)
    {
        fin>>b>>a;

        if(a==0)
        {
            if(v[cautbin(b)]==b)
                fout<<cautbin(b)<<endl;
            else
                fout<<"-1"<<endl;
        }
        else if(a==1)
        {
            fout<<cautbin(b)<<endl;
        }
        else
        {
            fout<<cautbin(b-1)+1<<endl;
        }
    }
}