Cod sursa(job #2638965)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 30 iulie 2020 18:18:38
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.83 kb
#include <fstream>

using namespace std;

const int NMAX=100000;

unsigned int vec[1+NMAX];

int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int n,m,a,b,i,st,dr,mijloc,sol;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>vec[i];
    }
    f>>m;
    for(i=1;i<=m;i++)
    {
        f>>a>>b;
        st=1;
        dr=n;
        sol=-1;
        if(a==0)
        {
            while(st<=dr)
            {
                mijloc=(st+dr)/2;
                if(vec[mijloc]<=b)
                {
                    if(vec[mijloc]==b)
                    {
                        sol=mijloc;
                    }
                    st=mijloc+1;
                }
                else
                {
                    dr=mijloc-1;
                }
            }
            g<<sol<<'\n';
        }
        else
        {
            if(a==1)
            {
                while(st<=dr)
                {
                    mijloc=(st+dr)/2;
                    if(vec[mijloc]<=b)
                    {
                        sol=mijloc;
                        st=mijloc+1;
                    }
                    else
                    {
                        dr=mijloc-1;
                    }
                }
                g<<sol<<'\n';
            }
            else
            if(a==2)
            {
                while(st<=dr)
                {
                    mijloc=(st+dr)/2;
                    if(vec[mijloc]>=b)
                    {
                        sol=mijloc;
                        dr=mijloc-1;
                    }
                    else
                    {
                        st=mijloc+1;
                    }
                }
                g<<sol<<'\n';
            }
        }
    }
    return 0;
}