Cod sursa(job #2647373)

Utilizator flv.ghGherasim Flavius-Sebastian flv.gh Data 4 septembrie 2020 10:38:10
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.7 kb
#include <fstream>

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