Cod sursa(job #1503590)

Utilizator mihaitheodorMihai Theodor Iliant mihaitheodor Data 16 octombrie 2015 15:43:50
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<algorithm>
using namespace std;
const int Nmax=100001;
int N,m,v[Nmax], a, b;
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(int i=1;i<=N;++i) fin>>v[i];
    fin>>m;
    for(int i=1;i<=m;++i)
    {
        fin>>a>>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";
        }
    }
    return 0;
}