Cod sursa(job #2982554)

Utilizator gabriel10tm@gmail.comGabriel Marian [email protected] Data 20 februarie 2023 14:17:52
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
using namespace std;
const int nmx = 1e5 + 4;
int a[nmx];
#if 1
#define cin fin
#define cout fout
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
#endif // 1
int main(){
    int n,m;
    cin >> n;
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    cin >> m;
    while(m--){
        int op,x;
        cin >> op >> x;
        if(op==0){
            //cea mai mare pozitie pe care se afla un element cu valoarea x sau -1 daca aceasta valoare nu se gaseste in sir
            int p = upper_bound(a,a+n,x)-a-1;
            cout << (a[p]==x ? p+1 : -1);
        }
        else if(op==1){
            // cea mai mare pozitie pe care se afla un element cu valoarea mai mica sau egala cu x in sir.
            int p = upper_bound(a,a+n,x)-a-1;
            cout << p + 1;
        }
        else if(op==2){
            // cea mai mica pozitie pe care se afla un element cu valoarea mai mare sau egala cu x in sir
            int p = lower_bound(a,a+n,x)-a;
            cout << p + 1;
        }
        cout << "\n";
    }
}