Cod sursa(job #2563047)

Utilizator bodea.georgianaBodea Georgiana bodea.georgiana Data 29 februarie 2020 22:12:33
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <fstream>
#define N 100002

using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int v[N],val,n;
void c1(int x)
{
    int st=1,dr=n,mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]<=x)
        {
            val=mij;
            st=mij+1;
        }
        else
            dr=mij-1;
    }
}
void c2(int x)
{
    int st=1,dr=n,mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]<x)
            st=mij+1;
        else
        {
            val=mij;
            dr=mij-1;
        }
    }
}
int main()
{
    f>>n;
    for(int i=1;i<=n;++i) f>>v[i];
    int m,caz,x;
    f>>m;
    while(m--)
    {
        f>>caz>>x;
        val=-1;
        if(caz==0)
        {
            c1(x);
            if(v[val]==x) g<<val<<'\n';
            else g<<-1<<'\n';

        }
        else
            if(caz==1)
            {
                c1(x);
                 if(v[val]<=x) g<<val<<'\n';
                 else g<<-1<<'\n';
            }
            else
            {
                c2(x);
                if(v[val]<=x) g<<val<<'\n';
                else g<<-1<<'\n';
            }
    }
    f.close();
    g.close();
    return 0;
}