Cod sursa(job #2640415)

Utilizator Stefan4814Voicila Stefan Stefan4814 Data 6 august 2020 13:22:56
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, x, v[100001];

int bin_search(int element) {
    ll left = 1, right = n;
    while (left < right) {
        int mid = left + (right - left) / 2;

        v[mid] < element ? left = mid + 1 : right = mid;
    }

    return left;
}

int main() {
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> v[i];
    int m;
    fin >> m;

    while(m--) {
        int req;
        fin >> req >> x;
        if(!req) {
            int pos = bin_search(x + 1) - 1;
            if (v[pos] == x)
                fout << pos << '\n';
            else if (v[pos + 1] == x && pos + 1 <= n)
                fout << pos + 1 << '\n';
            else
                fout << "-1" << '\n';
        }
        else if(req == 1) {
            int pos = bin_search(x + 1) - 1;
            if (pos + 1 <= n && v[pos + 1] <= x)
                fout << pos + 1 << '\n';
            else
                fout << pos << '\n';
        }
        else
            fout << bin_search(x) << '\n';

    }
    return 0;
}