Cod sursa(job #2919188)

Utilizator victor_gabrielVictor Tene victor_gabriel Data 16 august 2022 13:00:09
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>

using namespace std;

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

const int DIM = 100001;

int n, m;
int v[DIM];

int binarySearch(int value, int type) {
    bool inArray = false;
    int left = 1, right = n;
    while (left <= right) {
        int mid = (left + right) / 2;
        if (v[mid] == value)
            inArray = true;

        if (v[mid] <= value)
            left = mid + 1;
        else
            right = mid - 1;
    }

    if (type == 0)
        return (inArray ? right : -1);
    if (type == 1)
        return right;

    left = 1, right = n;
    while (left <= right) {
        int mid = (left + right) / 2;
        if (v[mid] >= value)
            right = mid - 1;
        else
            left = mid + 1;
    }
    return left;
}

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

    fin >> m;
    for (int i = 1; i <= m; i++) {
        int cmd, x;
        fin >> cmd >> x;
        fout << binarySearch(x, cmd) << '\n';
    }

    return 0;
}