Cod sursa(job #1527460)

Utilizator radu_nastaseNastase Radu radu_nastase Data 18 noiembrie 2015 08:52:55
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[105],l,opt,poz,nr,nri,i;

int cautare0(int st,int numar,int dr)
{

    int mij;
    mij=(st+dr)/2;
    if (st>dr)
        return dr;
    else if(numar>=a[mij])
        return cautare0(mij+1,numar,dr);
    else if(numar<a[mij])
        return cautare0(st,numar,mij-1);
}
int cautare1(int st,int numar,int dr)
{

    int mij;
    mij=(st+dr)/2;
    if (st>dr)
        return dr;
    else if(numar>a[mij])
        return cautare0(mij+1,numar,dr);
    else if(numar<=a[mij])
        return cautare0(st,numar,mij-1);
}

int citire(int i = 0)
{
    if(i==l)
        return 0;
    f>>a[i];
    i++;
    return citire(i);
}

int main()
{
    f>>l;
    citire();
    f>>nri;
   for(i=0;i<nri;i++)
   {
       f>>opt;




    int jean;
   if(opt==0)
   {
    f>>nr;

   jean=cautare0(0,nr,l-1);
    if (a[jean]!=nr)
        g<<"-1";
    else
        g<<jean+1;
        g<<"\n";
   }
   if(opt==1)
    {
        f>>nr;

   g<<cautare0(0,nr,l-1);
    }
    if(opt==2)
     {f>>nr;
         g<<"\n"<<cautare1(0,nr,l-1)+2;

     }
   }
    return 0;
}