Cod sursa(job #2869524)

Utilizator Seress26Seres Artur Seress26 Data 11 martie 2022 16:48:47
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <limits.h>
#define NMAX 100001
///CAUTARE-BINARA.
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[NMAX],i,opt,x,k;
void Rezolvare1()
{
    int mij,gasit,lo,hi;
    lo=0;
    hi=n+1;
    while(hi-lo>1)
    {
        mij=(hi+lo)/2;
        if(v[mij]>x)
            hi=mij;
        else
            lo=mij;
    }
    if(lo<n+1&&v[lo]==x)
        g<<lo<<'\n';
    else
        g<<-1;
}
void Rezolvare2()
{
    int mij,lo,hi;
    lo=0;
    hi=n+1;
    while(hi-lo>1)
    {
        mij=(hi+lo)/2;
        if(v[mij]>x)
            hi=mij;
        else
            lo=mij;
    }
    g<<lo<<'\n';
}
void Rezolvare3()
{
    int mij,lo,hi;
    lo=0;
    hi=n+1;
    while(hi-lo>1)
    {
        mij=(hi+lo)/2;
        if(v[mij]<x)
            lo=mij;
        else
            hi=mij;
    }
    g<<hi<<'\n';
}
void Citire()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
    f>>k;
    while(k!=0)
    {
        f>>opt;
        f>>x;
        if(opt==0)
            Rezolvare1();
        if(opt==1)
            Rezolvare2();
        if(opt==2)
            Rezolvare3();
        k--;
    }
}
int main()
{
    Citire();

    return 0;
}