Cod sursa(job #3295845)

Utilizator fantomcristi fantom Data 9 mai 2025 00:33:53
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;

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

int main() {
    int n, m;
    cin >> n;
    vector<long long> sir(n);
    for (int i = 0; i < n; i++) {
        cin >> sir[i];
    }

    cin >> m;
    while (m--) {
        int tip;
        long long x;
        cin >> tip >> x;

        if (tip == 0) {
            auto pozitie = upper_bound(sir.begin(), sir.end(), x);
            if (pozitie == sir.begin() || *(pozitie - 1) != x) {
                cout << -1 << '\n';
            }
            else {
                cout << (pozitie - sir.begin()) << '\n';
            }
        }
        else if (tip == 1) {
            auto pozitie = upper_bound(sir.begin(), sir.end(), x);
            cout << (pozitie - sir.begin()) << '\n';
        }

        else if (tip == 2) {
            auto pozitie = lower_bound(sir.begin(), sir.end(), x);
            cout << (pozitie - sir.begin()) + 1 << '\n';
        }
    }

    return 0;
}