Cod sursa(job #2669020)

Utilizator pregoliStana Andrei pregoli Data 5 noiembrie 2020 21:43:42
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>
using namespace std;
#define STOP fout.close(); exit(EXIT_SUCCESS);
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
///***********************
const int NMAX = 1e5 + 3;
int n, m, v[NMAX];

int main() {
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> v[i];
    for (fin >> m; m; m--) {
        int op, x;
        fin >> op >> x;
        if (!op) {
            int p = upper_bound(v + 1, v + n + 1, x) - v - 1;
            if (0 <= p && p <= n && v[p] == x)
                fout << p;
            else
                fout << -1;
        } else if (op == 1) {
            int p = lower_bound(v + 1, v + n + 1, x + 1) - v - 1;
            if (1 <= p && p <= n && v[p] == x)
                fout << p;
            else
                fout << -1;
        } else {
            int p = lower_bound(v + 1, v + n + 1, x) - v;
            if (1 <= p && p <= n && v[p] == x)
                fout << p;
            else
                fout << -1;
        }
        fout << '\n';
    }
    STOP
}