Cod sursa(job #2666594)

Utilizator andreibazavanAndrei Bazavan andreibazavan Data 2 noiembrie 2020 10:54:39
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,mijloc,st,dr,caz,e,m,v[100001];
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>v[i];
    fin>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>caz>>e;
        st=1;
        dr=n;
        while(dr-st>1)
        {
            mijloc=(dr+st)/2;
            if(v[mijloc]<e)
                dr=mijloc;
            else
                st=mijloc;
            // cout << st<<' ' <<dr<<' '<<mijloc << endl;
        }
        if(caz==0)
        {
            if(v[st]==e)
                fout<<st<<'\n';
            else
                fout<<"-1"<<'\n';
        }

        if(caz==1)
        {
            while(v[st]>e)
                st--;
            fout<<st<<'\n';
        }

        if(caz==2)
        {
            while(v[st-1]==e)
                st--;
            while(v[st]<e)
                st++;
            fout<<st<<'\n';
        }
    }
    //cout << "Hello world!" << endl;
    return 0;
}