Cod sursa(job #2860940)

Utilizator raresstan72stan rares raresstan72 Data 3 martie 2022 11:09:48
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>

using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n, m, a[100005], x, y, z;

void citire() {
    int i;
    cin >> n;
    for (i = 1; i <= n; i++)
        cin >> a[i];
    cin >> m;

}

int caz1(int h) {
    int dr = n, st = 1, poz = -1;
    while (st <= dr) {
        int mid = (dr + st) / 2;
        if (a[mid] > h)
            dr = mid - 1;
        else {
            if (a[mid] == h)
                poz = mid;
            st = mid + 1;
        }
    }
    return poz;
}

int caz2(int h) {
    int dr = n, st = 1, poz = -1;
    while (st <= dr) {
        int mid = (dr + st) / 2;
        if (a[mid] > h)
            dr = mid - 1;
        else {
            poz = mid;
            st = mid + 1;
        }
    }
    return poz;
}

int caz3(int h) {
    int dr = n, st = 1, poz = -1;
    while (st <= dr) {
        int mid = (dr + st) / 2;
        if (a[mid] >= h) {
            poz = mid;
            dr = mid - 1;
        } else { st = mid + 1; }
    }
    return poz;
}

void afisare() {
    int i = 0;
    for (i = 1; i <= m; i++) {
        cin >> y >> z;
        if (y == 0)cout << caz1(z);
        else if (y == 1)cout << caz2(z);
        else cout << caz3(z);
        cout << endl;
    }
}

int main() {
    citire();
    afisare();
    return 0;
}