Cod sursa(job #1508197)

Utilizator adu18sptAndrei Mircea adu18spt Data 22 octombrie 2015 13:21:36
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>
#include<algorithm>
using namespace std;
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()
{
    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>>b;

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

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