Cod sursa(job #1423717)

Utilizator Iustin48Ventaniuc Iustin Iustin48 Data 22 aprilie 2015 14:02:10
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int tip,x,i,lg,n,m,v[100005],logn;
int main()
{
    f>>n;
    for(i=1;i<=n;++i)
        f>>v[i];
    for(logn=1;logn<=n;logn<<=1);
    f>>m;
    for(;m;--m)
    {
        f>>tip>>x;
        if(tip<2)
        {
            for(lg=logn,i=0;lg;lg>>=1)
                if(i+lg<=n&&v[i+lg]<=x)
                    i+=lg;
            if(!tip&&v[i]!=x)
                g<<-1<<'\n';
                else
                    g<<i<<'\n';
            continue;
        }
        for(lg=logn,i=n;lg;lg>>=1)
            if(i-lg>0&&v[i-lg]>=x)
                i-=x;
        g<<i<<'\n';
    }
    return 0;
}