Cod sursa(job #2600950)

Utilizator George_CristianGeorge Dan-Cristian George_Cristian Data 13 aprilie 2020 14:49:05
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, a[100005], m, op, val;

int main() {
    f >> n;
    for (int i = 1; i <= n; ++i)
        f >> a[i];
    f >> m;
    for (int i = 0; i < m; ++i) {
        f >> op >> val;
        if (op != 2) {
            int st = 1, dr = n, mij;
            while (st <= dr) {
                mij = (st + dr) / 2;
                if (a[mij] > val)
                    dr = mij - 1;
                else
                    st = mij+1;
            }
            if (op == 0) {
                if (a[dr] == val)
                    g << dr << '\n';
                else
                    g << -1<<'\n';
            } else if (op == 1)
                g << dr << '\n';
        } else {
            int st = 1, dr = n, mij;
            while (st <= dr) {
                mij = (st + dr) / 2;
                if (a[mij] >= val)
                    dr = mij - 1;
                else
                    st = mij+1;
            }
            g << st << '\n';
        }
    }
    return 0;
}