Cod sursa(job #1156624)

Utilizator xtreme77Patrick Sava xtreme77 Data 27 martie 2014 20:12:15
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

#define MAXX 100100

using namespace std;

int n,m,v[MAXX],step;

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

int main()
{
    int op,x,i,aux;
    fin>>n;
    for (i=1;i<=n;++i)
        fin>>v[i];
    for (step=1;step<=n;step<<= 1);
    fin>>m;
    while(m)
    {
        fin>>op>>x;
        if (!op or op==1){
            for (aux=step,i=0;aux!=0;aux>>= 1)
                if (i+aux<=n and v[i+aux]<=x)
                    i+=aux;
            if (!op and v[i]!= x)
                fout<<"-1"<<'\n';
            else
                fout<<i<<'\n';
            --m;
            continue;
        }
        for (aux=step,i=n;aux!=0;aux>>=1)
            if (i-aux>0 and v[i-aux]>=x)
                i-=aux;
        fout<<i<<'\n';
        --m;
    }

    return 0;
}