Cod sursa(job #3277953)

Utilizator Albert_PrimeAlbert Olariu Albert_Prime Data 18 februarie 2025 11:58:27
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;

int main()
{
    freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);
    int n;
    cin >> n;
    vector<int> v(n);
    for(int i = 0; i < n; i++)
    {
        cin >> v[i];
    }
    int q;
    cin >> q;
    for(int i = 0; i < q; i++)
    {
        int op, x;
        cin >> op >> x;
        int ub = upper_bound(v.begin(), v.end(), x) - v.begin();
        int lb = lower_bound(v.begin(), v.end(), x) - v.begin();
        if(op == 0)
        {
            if(v[ub - 1] != x)
            {
                cout << -1;
            }
            else
            {
                cout << ub;
            }
        }
        else if(op == 1)
        {
            cout << ub;
        }
        else
        {
            if(v[lb] == x)
            {
                cout << lb + 1;
            }
            else
            {
                cout << ub + 1;
            }
        }
        cout << "\n";
    }
}