Cod sursa(job #3187869)

Utilizator arrckerArdeleanu Aris Matei arrcker Data 30 decembrie 2023 21:33:20
Problema Cautare binara Scor 0
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream gout("cautbin.out");
int main()
{

    long long n,m,a,b,r,k=0;
    fin>>n;
    int v[n];
    for(int i=0; i<n; ++i) fin>>v[i];
    fin>>m;
    int f[m];
    for(int i=0; i<m; ++i){
        fin>>a>>b;
        if(a==0){
            r=upper_bound(v,n+v,b)-v;
            --r;
            if(r>=0 && v[r]==r){
                f[k++]=r+1;
            }
            else f[k++]=-1;
        }
        else if(a==1){
            r=upper_bound(v,v+n,b)-v;
            --r;
            f[k++]=r+1;
        }
        else if(a==2){
            r=lower_bound(v,v+n,b)-v;
            if(v[r]==b) f[k++]=r+1;
            else f[k++]=r+1+1;
        }
    }
    for(int i=0; i<k; ++i) gout<<f[i]<<"\n";



    return 0;
}