Cod sursa(job #3361058)

Utilizator steleincerDavid G steleincer Data 19 iulie 2026 17:46:16
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.67 kb

#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100005];
int N, M;

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

    fin >> M;
    for (int i = 1; i <= M; i++) {
        int tip, x;
        fin >> tip >> x;

        if (tip == 0) {

            int st = 1, dr = N;
            int raspuns = -1;

            while (st <= dr) {
                int mij = st + (dr - st) / 2;
                if (v[mij] == x) {
                    raspuns = mij;
                    st = mij + 1;
                } else if (v[mij] < x) {
                    st = mij + 1;
                } else {
                    dr = mij - 1;
                }
            }
            fout << raspuns << "\n";
        }
        else if (tip == 1) {

            int st = 1, dr = N;
            int raspuns = 1;

            while (st <= dr) {
                int mij = st + (dr - st) / 2;
                if (v[mij] <= x) {
                    raspuns = mij;
                    st = mij + 1;
                } else {
                    dr = mij - 1;
                }
            }
            fout << raspuns << "\n";
        }
        else if (tip == 2) {

            int st = 1, dr = N;
            int raspuns = N;

            while (st <= dr) {
                int mij = st + (dr - st) / 2;
                if (v[mij] >= x) {
                    raspuns = mij;
                    dr = mij - 1;
                } else {
                    st = mij + 1;
                }
            }
            fout << raspuns << "\n";
        }
    }

    return 0;
}