Cod sursa(job #3314430)

Utilizator tudor13mai@gmail.comBuciuman Tudor [email protected] Data 10 octombrie 2025 09:07:35
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m;
vector<int> v(100100);
int main(){
    int a,b;
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);
    fin>>n;
    for(int i=0; i<n; i++){
        fin>>v[i];
    }
    fin>>m;
    for(int i=0; i<m; i++){
        fin>>a>>b;
        if(a==0){
            auto y=upper_bound(v.begin(),v.begin()+n,b);
            if(y!=v.end() && v[y-v.begin()-1]==b){
                fout<<y-v.begin()<<'\n';
            }
            else
                fout<<-1<<'\n';
        }
        else if(a==1){
            auto y=upper_bound(v.begin(),v.begin()+n,b);
            if(y!=v.end()){
                fout<<y-v.begin()<<'\n';
            }
            else
                fout<<-1<<'\n';
        }
        else{
            auto y=lower_bound(v.begin(),v.begin()+n,b);
            if(y!=v.end()){
                if( v[y-v.begin()-1]==b)
                fout<<y-v.begin()<<'\n';
            else
                fout<<y-v.begin()+1<<'\n';
            }
            else
                fout<<-1<<'\n';
        }
    }
    return 0;
}