Cod sursa(job #3359991)

Utilizator VictorBbBBaescu Victor VictorBbB Data 7 iulie 2026 16:35:05
Problema Cautare binara Scor 100
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.52 kb
#include <iostream>
#include <fstream>

using namespace std;

int n, m;
int v[100005];

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

int main() {

    
    fin >> n;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
    }
    fin >> m;
    for (int i = 0; i < m; ++i) {
        int tip, x;
        fin >> tip >> x;

        int st = 1, dr = n, rez = -1;

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