Cod sursa(job #2782800)

Utilizator LucaSimionovLuca Mihai Simionov LucaSimionov Data 13 octombrie 2021 09:33:20
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <fstream>

using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");

int n, x, a[10000];

int cautbinar_0 (int n, int x, int a[])
{
    int st = 1;
    int dr = n;
    int poz = -1;

    while (st <= dr)
    {
        int mid = (st + dr) / 2;
        if (x <= a[mid]) dr = mid - 1;
        else
        {
            if (x == a[mid]) poz = mid;
            st = mid + 1;
        }
    }
    return poz;
}

int cautbinar_1 (int n, int x, int a[])
{
    int st = 1;
    int dr = n;
    int poz = -1;

    while (st <= dr)
    {
        int mij = (st + dr) / 2;
        if (a [mij] <= x)
        {
            poz = mij;
            st = mij + 1;
        }
        else dr = mij - 1;
    }
    if (a[poz] <= x) return poz;
}

int cautbinar_2 (int n, int x, int a[])
{
    int st = 1;
    int dr = n;
    int poz = -1;

    while (st <= dr)
    {
        int mij = (st + dr) / 2;
        if (a [mij] <= x)
        {
            dr = mij - 1;
            poz = mij;
        }
        else
        {
            st = mij + 1;
        }
    }
    return poz;
}

int main()
{
    f >> n;
    f >> x;

    for (int i = 1; i <= n; i ++)
    {
        f >> a [i];
    }

    g << cautbinar_0(n, x, a);
    g << cautbinar_1(n, x, a);
    g << cautbinar_2(n, x, a);
    return 0;
}