Cod sursa(job #2529740)

Utilizator matthriscuMatt . matthriscu Data 23 ianuarie 2020 21:41:33
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.41 kb
#include <fstream>
using namespace std;

int cautbin0(int *v, int n) {
    int stanga = 0, dreapta = sizeof(v), mid;
    while(stanga < dreapta) {
        mid = (stanga + dreapta) / 2;
        if(v[mid] == n && v[mid+1] != n)
            return mid;
        else if(v[mid] > n)
            dreapta = mid;
        else
            stanga = mid;
    }
    return -1;
}

int cautbin1(int *v, int n) {
    int stanga = 0, dreapta = sizeof(v), mid;
    while(stanga < dreapta) {
        mid = (stanga + dreapta) / 2;
        if(v[mid] == n && v[mid] <= n)
            return mid;
        else if(v[mid] > n)
            dreapta = mid;
        else
            stanga = mid;
    }
    return -1;
}

int cautbin2(int *v, int n) {
    int stanga = 0, dreapta = sizeof(v), mid;
    while(stanga < dreapta) {
        mid = (stanga + dreapta) / 2;
        if(v[mid] == n && v[mid] >= n)
            return mid;
        else if(v[mid] > n)
            dreapta = mid;
        else
            stanga = mid;
    }
    return -1;
}

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

int main() {
    int n;
    fin >> n;
    int v[n], q, nr;
    for(int i = 0; i < n; i++)
        fin >> v[i];
    fin >> q >> nr;
    if(q == 0)
        fout << cautbin0(v, nr) + 1;
    if(q == 1)
        fout << cautbin1(v, nr) + 1;
    if(q == 2)
        fout << cautbin2(v, nr) + 1;
    fout << '\n';
}