Cod sursa(job #2037112)

Utilizator harosa_emaHarosa Emanuela harosa_ema Data 11 octombrie 2017 19:06:31
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.52 kb
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int v[100000], a[100000];

int CautareBinara0 (int l, int r, int gasit) {
    int m;
     m = (l + r) / 2;

    while (l <= r)
        {

        if (v[m] <= gasit)
            l = m + 1;
        else
            r = m - 1;
        }

    if (v[m] > gasit) m --;
    if (v[m] == gasit)
        return m;
    return -1;
}

int CautareBinara1 (int l, int r, int gasit)
{
    int m;
      m = (l + r) / 2;

    while (l < r)
        {
        m = (l + r) / 2;
        if (v[m] <= gasit)
            l = m + 1;
        else
            r = m;
    }
    if (v[m] > gasit)
       -- m;
    return m;
}
int CautareBinara2 (int l, int r, int gasit)
 {
    int m;
     m = (l + r) / 2;

    while (l < r) {
        m = (l + r) / 2;
        if (v[m] < gasit)
            l = r + 1;
        else
            r = m;
    }
     if (v[m] < gasit)
       ++ m;
    return m;
}
int main()
{
    int n, nr, tip, val;
    fin >> n;
    for ( int i = 1; i <= n; ++ i)
        fin >> v[i];
     fin >> nr;
     for ( int  i = 1; i <= nr; ++ i)
     {
         fin >> val;
         fin >> tip;
     }
     while ( nr-- )
     {
         if ( tip == 0 )
            fout << CautareBinara0(1, n, val);
         if ( tip == 1 )
            fout << CautareBinara1(1, n, val);
          if ( tip == 1 )
            fout << CautareBinara2(1, n, val);

     }

    fin.close();
    fout.close();
}