Cod sursa(job #1630132)

Utilizator dorin31Geman Dorin Andrei dorin31 Data 4 martie 2016 22:35:49
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int n,m,logN;
int v[100001];



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

    for (logN=1; logN<=n; logN<<=1);

    fin>>m;
    while (m--)
    {
        int cod,val;
        fin>>cod>>val;
        if (cod<2) {
            int i=0;
            for (int step=logN; step; step>>=1)
                if (i+step<=n&&v[i+step]<=val)
                    i+=step;
            if (v[i]!=val) fout<<"-1\n";
            else fout<<i<<'\n';
        }
        else {
            int i=n;
            for (int step=logN; step; step>>=1)
                if (i-step>0&&v[i-step]>=val)
                    i-=step;
            fout<<i<<'\n';
        }
    }
    return 0;
}