Cod sursa(job #2776148)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 18 septembrie 2021 18:43:51
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream>
using namespace std;
ifstream F("cautbin.in");
ofstream G("cautbin.out");
int n,m,i,v[100001],x,y,s,l;
int main()
{
    F>>n;
    for(i=1;i<=n;++i)
        F>>v[i];
    for(F>>m,l=1;l<=n;l<<=1);
    while(m--) {
        F>>x>>y;
        if(x<2) {
            for(s=l,i=0;s;s>>=1)
                if(i+s<=n&&v[i+s]<=y)
                    i+=s;
            G<<(!x&&v[i]!=y?-1:i)<<"\n";
            continue;
        }
        for(s=l,i=n;s;s>>=1)
            if(i>s&&v[i-s]>=y)
                i-=s;
        G<<i<<"\n";
    }
    return 0;
}