Cod sursa(job #2972550)

Utilizator alexscanteieScanteie Alexandru alexscanteie Data 29 ianuarie 2023 18:19:57
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <fstream>
using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");


int main()
{
    int n,nrIntrebari,cerinta,x;
    fin>>n;
    int v[n+1];// sau int v[100001] dar ocupa mai mult spatiu pentru n mic
    for(int i=1;i<=n;i++)
        fin>>v[i];
    fin>>nrIntrebari;
    for(int i=1;i<=nrIntrebari;i++)
    {
        fin>>cerinta>>x;
        if(cerinta<2)
        {
            int st=1,dr=n,poz=-1;
            while(st<=dr)
            {
                int mij=(st+dr)/2;
                if(v[mij]<=x)
                {
                    poz=mij;
                    st=mij+1;
                }
                else
                    dr=mij-1;
            }
            if(cerinta==0)
            {
                if(v[poz]==x)
                    fout<<poz<<'\n';
                else
                    fout<<-1<<'\n';
            }
            else
                fout<<poz<<'\n';
        }
        else
        {
            int st=1,dr=n,poz=-1;
            while(st<=dr)
            {
                int mij=(st+dr)/2;
                if(v[mij]>=x)
                {
                    poz=mij;
                    dr=mij-1;
                }
                else
                    st=mij+1;
            }
            fout<<poz<<'\n';
        }
    }
    return 0;
}