Cod sursa(job #2278377)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 7 noiembrie 2018 22:46:38
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int cautbin(int *v, int left, int right, int op, int el) {
    if (left > right) {
        if (op == 0) return (v[right] == el) ? right : -1;
        if (op == 1) return right;
        return left;
    }
    int mid = left + (right - left) / 2;
    if (v[mid] == el) {
        if (op == 0 || op == 1) return cautbin(v, mid + 1, right, op, el);
        return cautbin(v, left, mid - 1, op, el);
    }
    if (v[mid] < el)
        return cautbin(v, mid + 1, right, op, el);
    return cautbin(v, left, mid - 1, op, el);
}
int main() {
    int N;
    f >> N;
    int A[N+1], i, M, op, x;
    for (i = 1; i <= N; i++)
        f >> A[i];
    f >> M;
    while (M--) {
        f >> op >> x;
        g << cautbin(A, 1, N, op, x) << '\n';
    }
    return 0;
}