Cod sursa(job #1830322)

Utilizator EuEricCiordel Rromeo EuEric Data 16 decembrie 2016 15:43:56
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<fstream>
int v[10000];
using namespace std;
int n,k;
int cautare1()
{
      int st=1,dr=n,pozi=-1;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(v[mij]>k)
        {
            dr=mij-1;
                pozi=mij;
        }
        else
            st=mij+1;
    }
    return pozi;
}
int cautare2()
{
   int pozi=-1,st=1,dr=n;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(v[mij]>=k)
        {
            dr=mij-1;
        if(v[mij]==k)
            pozi=mij;
        }
        else
            st=mij+1;
    }
    return pozi;
}
int cautare3()
{
    int pozi=1,st=1,dr=n;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(v[mij]<=k)
        {
            st=mij+1;
            if(v[mij]==k)
                pozi=mij;
        }
        else
            dr=mij-1;
    }
    return pozi;
}
int main()
{
    ifstream cin("cautbin.in");
    ofstream cout("cautbin.out");
    cin>>n;
    for(int i=1;i<=n;++i)
        cin>>v[i];
    cin>>k;
    cout<<cautare1()<<endl<<cautare2()<<endl<<cautare3();
}