Cod sursa(job #2126793)

Utilizator mihnea00Duican Mihnea mihnea00 Data 9 februarie 2018 23:07:34
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.44 kb
#include <fstream>

using namespace std;

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

int n,i,j,v[100010],dela,k,c,x,panala,mijl;

int binara1(int x)
{
     dela=1;
     panala=n;

    while(dela<panala)
    {
        mijl=(dela+panala+1)/2;

        if( x<v[mijl] )
        {
            panala=mijl-1;
        }
        if( x>v[mijl] )
        {
            dela=mijl+1;
        }
        if(x==v[mijl])
        {
            dela=mijl;
        }
    }
    if(v[dela]!=x)
        return -1;
    return dela;
}

int binara2(int x)
{
     dela=1;
     panala=n;

    while(dela<panala)
    {
        mijl=(dela+panala+1)/2;

        if( x<v[mijl] )
        {
            panala=mijl-1;
        }
        else
        {
            dela=mijl;
        }
    }
    return dela;
}

int binara3(int x)
{
    dela=1;
    panala=n;

    while(dela<panala)
    {
        mijl=(dela+panala)/2;
        if( x<=v[mijl])
        {
            panala=mijl;
        }
        else
        {
            dela=mijl+1;
        }
    }
    return dela;
}

int main()
{
    fin>>n;
    for(i=1;i<=n;++i)
    {
        fin>>v[i];
    }
    fin>>k;
    for(i=1;i<=k;++i)
    {
        fin>>c>>x;
        if(c==0)
            fout<<binara1(x)<<"\n";
        if(c==1)
            fout<<binara2(x)<<"\n";
        if(c==2)
            fout<<binara3(x)<<"\n";
    }

    return 0;
}