Cod sursa(job #1626065)

Utilizator stefanst77Luca Stefan Ioan stefanst77 Data 2 martie 2016 22:08:12
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <bits/stdc++.h>

using namespace std;

int a[101];
int n;

void Citire()
{
    int i;
    ifstream fin("cautbin.in");
    fin >> n;
    for (i = 1; i <= n; ++i)
        fin >> a[i];
    fin.close();
}

/// functie care primeste un vector ordonat
/// crescator si o valoare x
/// ret. 0 daca x nu apare in vector
/// sau ret. pozitia unde apare x
int CautBin1(int x)
{
    int st, dr, m;
    st = 1; dr = n;
    while (st <= dr)
    {
        m = (st + dr) / 2;
        if (a[m] == x) return m;
        if (a[m] < x) st = m + 1;
        else dr = m - 1;
    }
return 0;
}

///cauta cea mai din stanga poz. m unde
/// x <= a[m]
int CautBin2(int x)
{
    int st, dr, m, poz;
    st = 1; dr = n; poz = 0;
    while (st <= dr)
    {
        m = (st + dr) / 2;
        if (a[m] >= x)
        {
            poz = m;
            dr = m - 1;
        }
        else st = m + 1;
    }
    return poz;
}

///cauta cea mai din dreapta poz. m unde
/// a[m] <= x
int CautBin3(int x)
{
    int st, dr, m, poz;
    st = 1; dr = n; poz = 0;
    while (st <= dr)
    {
        m = (st + dr) / 2;
        if (a[m] <= x)
        {
            poz = m;
            st = m + 1;
        }
        else dr = m - 1;
    }
return poz;
}

int main()
{
    Citire();
    cout << CautBin3(17);
return 0;
}