Cod sursa(job #2839404)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 25 ianuarie 2022 21:13:13
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

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

const int dim=100009;

int n,q,v[dim];

int cb(int x,int tip){
    int st=1,dr=n,retine=-1;
    while(st<=dr){
        int mij=(st+dr)/2;
        if(tip<=1){
            if(v[mij]<=x){
                retine=mij;
                st=mij+1;
            }
            else{
                dr=mij-1;
            }
        }
        else{
            if(v[mij]>=x){
                retine=mij;
                dr=mij-1;
            }
            else{
                st=mij+1;
            }
        }
    }
    return retine;
}

signed main(){
        fin>>n;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }
        fin>>q;
    while(q--){
        int op,x;
        fin>>op>>x;
        int retine=cb(x,op);
        retine=(op==0 && v[retine]!=x)? -1 : retine;
        fout<<retine<<'\n';
    }
}