Cod sursa(job #2892931)

Utilizator 1chiriacOctavian Neculau 1chiriac Data 23 aprilie 2022 23:53:19
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,t,nr,v[100005],querry;
int cb1() {
    int i=0, step=1;
    for(;step<=n; step = (step<<1));
    for(;step;step = (step>>1))
        if(i+step <=n && v[i+step]<=nr)
            i+=step;
    if(v[i] == nr)
        return i;
    return -1;
}
int cb2() {
    int i=0,step=1;
    for(;step<=n;step = (step<<1));
    for(;step;step = (step>>1))
        if(i+step<=n && v[i+step]<=nr)
            i+=step;
    return i;
}
int cb3() {
    int i=0,step=1;
    for(;step<=n;step = (step<<1));
    for(;step;step = (step>>1))
        if(i+step<=n && v[i+step]<nr)
            i+=step;
    return i+1;
}
int main () {
    fin>>n;
    for(int i=1;i<=n;++i)
        fin>>v[i];
    fin>>t;++t;
    while(--t) {
        fin>>querry>>nr;
        if(querry==0)
            fout<<cb1()<<'\n';
        else if (querry==1)
            fout<<cb2()<<'\n';
        else
            fout<<cb3()<<'\n';
    }
    return 0;
}