Cod sursa(job #3363412)

Utilizator Darius6000678Stan Darius Alexandru Darius6000678 Data 17 august 2026 17:34:09
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.41 kb
#include <iostream>
#include <fstream>

using namespace std;

const int VMAX = 100005;
int v[VMAX];

int cautbin0(int v[], int n , int x) {
    int st = 0, dr = n - 1, mij;
    while (st <= dr) {
        mij = (st + dr) / 2;
        if (v[mij] <= x) {
            st = mij + 1;
        } else {
            dr = mij - 1;
        }
    }
    if (dr >= 0 && v[dr] == x) {
        return dr + 1;
    }
    return -1;
}

int cautbin1(int v[], int n , int x) {
    int st = 0, dr = n - 1, mij;
    while (st <= dr) {
        mij = (st + dr) / 2;
        if (v[mij] <= x) {
            st = mij + 1;
        } else {
            dr = mij - 1;
        }
    }
    return dr + 1;
}

int cautbin2(int v[], int n , int x) {
    int st = 0, dr = n - 1, mij;
    while (st <= dr) {
        mij = (st + dr) / 2;
        if (v[mij] < x) {
            st = mij + 1;
        } else {
            dr = mij - 1;
        }
    }
    return st + 1;
}

int main() {
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    int n, h, m, k;
    fin >> n;
    for (int i = 0; i < n; i++) {
        fin >> v[i];
    }
    fin>>h;
    for (int i = 0; i < h; i++) {
        fin >> m >> k;
        if (m == 0) {
            fout << cautbin0(v, n, k) << "\n";
        }
        else if (m == 1) {
            fout << cautbin1(v, n, k) << "\n";
        }
        else if (m == 2) {
            fout << cautbin2(v, n, k) << "\n";
        }
    }
    return 0;
}