Cod sursa(job #3038029)

Utilizator DanielAtomDaniel Bence DanielAtom Data 26 martie 2023 19:09:28
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");
    in >> n;
    vector<int> sir;
    for(int i = 0; i < n; ++i) {
        int x;
        in >> x;
        sir.push_back(x);
    }
    
    sort(sir.begin(), sir.end());
    
    int m, a, b;
    in >> m;
    for(int i = 0; i < m; ++i) {
        in >> a >> b;
        int x;
        if(a == 0) {
            x = upper_bound(sir.begin(), sir.end(), b) - sir.begin() - 1;
            if(x < n && x > 0 && sir[x] == b) cout << x + 1;
            else out << -1;
        }
        else if(a == 1) {
            x = lower_bound(sir.begin(), sir.end(), b + 1) - sir.begin();
            out << x;
        }
        else if(a == 2) {
            x = upper_bound(sir.begin(), sir.end(), b - 1) - sir.begin() + 1;
            out << x;
        }
        out << "\n";
    }
    return 0;
}