Cod sursa(job #2071445)

Utilizator albucristianAlbu Cristian-Gabriel albucristian Data 20 noiembrie 2017 18:09:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.61 kb
#include <iostream>
#include <fstream>

using namespace std;

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

ifstream f("cautbin.in");
ofstream g("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()
{
    f>>n;
    int i, cod;
    for (i=1; i<=n; i++) f>>a[i];
    f>>m;
    for (i=1; i<=m; i++)
    {
        f>>cod>>x;
        switch(cod)
        {
            case 0:
                    g << caut0(x) << "\n";
                    break;
            case 1:
                    g << caut1(x) << "\n";
                    break;
            case 2:
                    g << caut2(x) << "\n";
                    break;
        }
    }
    return 0;
}