Cod sursa(job #2615390)

Utilizator robertnanu_fmiNanu Robert-Ionut robertnanu_fmi Data 14 mai 2020 15:41:17
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
//int const Max=1e5;
long long n,a[100001],m,cod,x,st,dr;
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>a[i];
    f>>m;
    for(int i=1;i<=m;i++)
    {
        f>>cod>>x;
        if(cod==2)
        {
            st=1, dr=n;         ///cea mai mica pozitie pe care se afla un element cu valoarea mai mare sau egala cu x in sir in st
            while(st<=dr)
            {
                long long mij=(st+dr)/2;
                if(a[mij]>=x)
                    dr=mij-1;
                else
                    st=mij+1;
            }
            g<<st<<"\n";
        }
        else
        {
            st=1, dr=n;
            while(st<=dr)
            {
                long long mij=(st+dr)/2;   ///cea mai mare pozitie pe care se afla un element cu valoarea mai mica sau egala cu x in sir in dr
                if(a[mij]>x)
                    dr=mij-1;
                else
                    st=mij+1;
            }
            if(cod==0)
            {
                if(a[dr]!=x)
                    g<<-1<<"\n";
                else
                    g<<dr<<"\n";
            }
            if(cod==1)
                g<<dr<<"\n";
        }

    }
    return 0;
}