Cod sursa(job #3168967)

Utilizator Tudor.1234Holota Tudor Matei Tudor.1234 Data 13 noiembrie 2023 21:54:56
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
#include <algorithm>
#include <vector>

std::ifstream cin("cautbin.in");
std::ofstream cout("cautbin.out");

std::vector<int> v;
int n, m;

void citire()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        int x;
        cin >> x;
        v.push_back(x);
    }
}

void solve()
{
    cin >> m;
    for (int i = 0; i < m; i++)
    {
        int c, x;
        cin >> c >> x;
        if (c == 0)
        {
            auto it = std::upper_bound(v.begin(), v.end(), x);
            int poz = (it != v.begin()) ? std::distance(v.begin(), it) - 1 : -1;
            cout << poz+1 << '\n';
        }
        else if (c == 1)
        {
            auto it = std::upper_bound(v.begin(), v.end(), x);
            int poz = (it != v.begin()) ? std::distance(v.begin(), it) - 1 : -1;
            cout << poz+1 << '\n';
        }
        else if (c == 2)
        {
            auto it = std::lower_bound(v.begin(), v.end(), x);
            int poz = (it != v.end()) ? std::distance(v.begin(), it) : -1;
            cout << poz+1 << '\n';
        }
    }
}

int main()
{
    std::ios_base::sync_with_stdio(false);
    cin.tie(0);
    citire();
    solve();
    return 0;
}