Cod sursa(job #2072496)

Utilizator ARobertAntohi Robert ARobert Data 21 noiembrie 2017 21:47:38
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.64 kb
#include <iostream>
#include <fstream>

using namespace std;

int n, m, x, a[100002];

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

int caut0(int c)
{
    int li=1, ls=n, mij, poz=-1;

        while (li<=ls)
            {
                mij=li+(ls-li)/2;

                if (c==a[mij])
                  poz=mij;

                if (c>=a[mij]) li=mij+1;
                          else ls=mij-1;
            }
        return (poz);
}

int caut1(int c)
{
    int li=1, ls=n, mij, poz=-1;

        while (li<=ls)
            {
                mij=li+(ls-li)/2;

                if (c>=a[mij])
                 {
                     poz=mij;
                     li=mij+1;
                 }
                else ls=mij-1;
            }
        return (poz);
}

int caut2(int c)
{
    int li=1, ls=n, mij, poz=-1;

        while (li<=ls)
            {
                mij=li+(ls-li)/2;

                if (c<=a[mij])
                  {
                      poz=mij;
                      ls=mij-1;
                  }

                 else li=mij+1;
            }
        return (poz);
}
int main()
{
    fin>>n;
    int i, cod;
    for (i=1; i<=n; i++) fin>>a[i];
    fin>>m;
    for (i=1; i<=m; i++)
    {
        fin>>cod>>x;
        switch(cod)
        {
            case 0:
                    fout << caut0(x) << "\n";
                    break;
            case 1:
                    fout << caut1(x) << "\n";
                    break;
            case 2:
                    fout << caut2(x) << "\n";
                    break;
        }
    }
    return 0;
}