Cod sursa(job #2587214)

Utilizator k2e0e0w3qDumitrescu Gheorghe k2e0e0w3q Data 22 martie 2020 14:36:34
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <bits/stdc++.h>
using namespace std;

int main () {
    ifstream fin ("cautbin.in");
    ofstream fout ("cautbin.out");
    vector <int> v;

    int n, x;
    fin >> n;
    for (; n; n--) {
        fin >> x;
        v.push_back(x);
    }

    int m, key;
    fin >> m;
    for (; m; m--) {
        fin >> key >> x;
        switch (key) {
        case 0: {
            auto it=upper_bound(v.begin(), v.end(), x);
            if (it!=v.end())
                fout << it-v.begin() << '\n';
            else
                fout << -1 << '\n';
            }
            break;
        case 1: {
            auto it=lower_bound(v.begin(), v.end(), x+1);
            if (it!=v.end())
                fout << it-v.begin() << '\n';
            else
                fout << -1 << '\n';
            }
            break;
        default: {
            auto it=upper_bound(v.begin(), v.end(), x-1);
            if (it!=v.end())
                fout << it-v.begin()+1   << '\n';
            else
                fout << -1 << '\n';
            }
            break;
        }
    }
    return 0;
}