Cod sursa(job #3245367)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 28 septembrie 2024 18:00:59
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");

int n, m, l, r;

int main() {
    in >> n;
    vector<int> v(n);

    for (int i = 0; i < n; i++) {
        in >> v[i];
    }

    in >> m;
    while (m--) {
        in >> l >> r;
        switch(l) {
            case 0: {
                auto pos0 = upper_bound(v.begin(), v.end(), r);
                --pos0;
                if (*pos0 != r || v[0] > r) {
                    out << -1 << '\n';
                    break;
                }

                out << pos0 - v.begin() + 1<< '\n';
                break;
                }
            case 1: {
                auto pos1 = upper_bound(v.begin(), v.end(), r);
                out << pos1 - v.begin() << '\n';
                break;
            }
            case 2: {
                auto pos2 = lower_bound(v.begin(), v.end(), r);
                out << pos2 - v.begin() + 1 << '\n';
                break;
            }
            default:
                break;
        }
    }
    return 0;
}