Cod sursa(job #1447525)

Utilizator florinasAsavei florinas Data 4 iunie 2015 17:27:10
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.45 kb
#include <iostream>
#include<fstream>

using namespace std;
int v[100005],n;
int cautarebinara0(int x)
{
    int mij,st,dr,aux,OK=0;
    st=1;
    dr=n;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(x<v[mij])
            dr=mij-1;
        else if(x>v[mij])
            st=mij+1;
        if(x==v[mij])
        {
            aux=mij;
            st=mij+1;
            OK=1;
        }
    }
    if(OK==0)
        return -1;
    return aux;

}

int cautarebinara1(int x)
{
    int mij,st,dr,aux;
    st=1;
    dr=n;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(x<v[mij])
            dr=mij-1;
        else
        {
            aux=mij;
            st=mij+1;

        }
    }
    return aux;
}
int cautarebinara2(int x)
{
    int mij,st=1,dr=n,aux;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if (x>v[mij])
            st=mij+1;

        else
        {
            aux=mij;
            dr=mij-1;
        }
    }
    return aux;

}
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int M,i,operatie,x;
    f>>n;
    for (int i=1; i<=n; i++)
        f>>v[i];
    f>>M;
    for(i=1; i<=M; i++)
    {
        f>>operatie;
        f>>x;
        if(operatie==0)
            g<<cautarebinara0(x)<<"\n";
        else if(operatie==1)
            g<<cautarebinara1(x)<<"\n";
        else g<<cautarebinara2(x)<<"\n";



    }

    return 0;
}