Cod sursa(job #2495801)

Utilizator T_george_TGeorge Teodorescu T_george_T Data 19 noiembrie 2019 20:40:26
Problema Cautare binara Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int NMAX=100000;
int v[NMAX+5];
int n,val,m;
int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    int logn,tip,a;
    for(logn=1;logn<=n;logn<<=1);
    in>>m;
    for(int i=1;i<=m;i++){
        int poz,log=logn;
        in>>tip>>a;
        if(tip<2){
           for(poz=0;log;log>>=1)
             if(log+poz<n && v[poz+log]<=a)
               poz+=log;
        if(!tip && v[poz]!=a)
            out<<-1<<'\n';
        else
            out<<poz<<'\n';
        continue;
        }
        for(log=logn,poz=n;log;log>>=1)
            if(poz-log>0 && v[poz-log]>=a)
              poz-=log;
        out<<poz<<'\n';
    }
    return 0;
}