Cod sursa(job #2249384)

Utilizator alex2209alexPavel Alexandru alex2209alex Data 29 septembrie 2018 18:44:03
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.81 kb
#include <fstream>

using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,v[100001],i,c,a,in,sf,mij,poz;
int main()
{
    f>>n;
    for(i=1; i<=n; i++)
    {
        f>>v[i];
    }
    f>>m;
    while(m--)
    {
        f>>c>>a;
        in=1;
        sf=n;
        poz=0;
        if(c==0)
        {
            while(in<=sf)
            {
                mij=(in+sf)/2;
                if(v[mij]<a)
                {
                    in=mij+1;
                }
                else if(v[mij]>a)
                {
                    sf=mij-1;
                }
                else
                {
                    in=mij+1;
                    poz=mij;
                }
            }
            if(poz!=0)
            {
                g<<poz<<'\n';
            }
            else
            {
                g<<-1;
            }
        }
        else if(c==1)
        {
            while(in<=sf)
            {
                mij=(in+sf)/2;
                if(v[mij]<=a)
                {
                    in=mij+1;
                    poz=mij;
                }
                else if(v[mij]>a)
                {
                    sf=mij-1;
                }
            }
            if(poz!=0)
            {
                g<<poz<<'\n';
            }
        }
        else
        {
            while(in<=sf)
            {
                mij=(in+sf)/2;
                if(v[mij]<a)
                {
                    in=mij+1;
                }
                else if(v[mij]>=a)
                {
                    sf=mij-1;
                    poz=mij;
                }
            }
            if(poz!=0)
            {
                g<<poz<<'\n';
            }
        }
    }
    return 0;
}