Cod sursa(job #2391355)

Utilizator onipreponiprep oniprep Data 28 martie 2019 19:38:46
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int N=100009;
int n,task,q;
long long step,val,i;
long long v[N];
void binary()
{
    long long ans;
    for(step=1;step<=n;step<<=1);
    if(task<=1)
    {
        for(i=0;step;step>>=1)
            if(i+step<=n&&v[i+step]<=val)
                i+=step;
        ans=i;
        if(task==0)
            if(v[i]!=val)
                ans=-1;
    }
    else
    {
        for(i=0;step;step>>=1)
            if(i+step<=n&&v[i+step]<val)
                i+=step;
        ans=i+1;
    }
    fout<<ans<<'\n';
}
void solve()
{
    while(q)
    {
        q--;
        fin>>task>>val;
        binary();
    }
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>v[i];
    fin>>q;
    solve();
    return 0;
}