Cod sursa(job #2673878)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 18 noiembrie 2020 00:19:24
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

int binarySearch(int n, const vector<int> &v, int x) {
    int le = 0, ri = n - 1;
    while(le < ri) {
        int mid = (le + ri) / 2;
        if(v[mid] <= x)
            le = mid + 1;
        else
            ri = mid;
    }

    if(v[le] > x)
        le --;
    return le;
}

int main() {

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

    int n;
    in >> n;
    vector<int> v(n, 0);
    for(int index = 0; index < n; index ++)
        in >> v[index];

    int m;
    in >> m;
    while(m --) {
        int op, x;
        in >> op >> x;
        int result = binarySearch(n, v, x);
        if(op == 0) {
            if(result < 0 || v[result] != x)
                out << -1 << "\n";
            else
                out << result + 1 << "\n";
        } else if(op == 1) {
            out << result + 1 << "\n";
        } else if(op == 2) {
            result = binarySearch(n, v, x - 1);
            result ++;
            out << result + 1 << "\n";
        }
    }

    return 0;
}