Cod sursa(job #1508202)

Utilizator adu18sptAndrei Mircea adu18spt Data 22 octombrie 2015 13:27:55
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>
#include<algorithm>
using namespace std;
const int Nmax=100001;
int n,m,a,b,v[Nmax],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()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");

    fin>>n;

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

    fin>>m;

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

        if(a==0)
        {
            int s=cautbin(b);

            if(v[s]==b)
                fout<<s<<"\n";
            else
                fout<<"-1"<<"\n";
        }
        if(a==1)
        {
            fout<<cautbin(b)<<"\n";
        }
        if(a==2)
        {
            fout<<cautbin(b-1)+1<<"\n";
        }
    }
}