Cod sursa(job #3312302)

Utilizator _.diannaq._Bengescu Diana _.diannaq._ Data 27 septembrie 2025 13:59:29
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
using namespace std;

struct intreb{
int intr;
int val;
};
intreb a[100001];
int v[100001];

int main()
{
    int n;
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>v[i];

    }
    int m;
    fin>>m;
    for(int i=1;i<=m;i++){
        fin>>a[i].intr>>a[i].val;
    }
for(int i=1;i<=m;i++){
    if(a[i].intr == 0){ // cautare exacta
        int idx = lower_bound(v+1,v+n+1,a[i].val) - v;
        if(idx <= n && v[idx] == a[i].val){
            int pu=upper_bound(v+1,v+n+1,a[i].val)-v-1;
            fout << pu << '\n';
        }
        else{
            fout << -1 << '\n';
    }
    }
    if(a[i].intr == 1){ // ultimul <= val
        int idx = upper_bound(v+1,v+n+1,a[i].val) - v - 1;
        fout << idx << '\n';
    }
    if(a[i].intr == 2){ // primul >= val
        int idx = lower_bound(v+1,v+n+1,a[i].val) - v;
        fout << idx << '\n';
    }
}


}