Cod sursa(job #331997)

Utilizator freak93Adrian Budau freak93 Data 16 iulie 2009 10:42:24
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>

using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");

const int maxn=100005;

int step,i,n,a[maxn],m,x,y;

int main()
{
    f>>n;
    for(i=1;i<=n;++i)
        f>>a[i];
    f>>m;
    for(i=1;i<=m;++i)
    {
        f>>x>>y;
        if(x<2)
        {
            for(step=1;step<=n;step<<=1);
            for(i=0;step;step>>=1)
                if(i+step<=n&&a[i+step]<=y)
                    i+=step;
            if(x==0&&a[i]!=y)
                g<<"-1\n";
            else
                g<<i<<"\n";
            continue;
        }
        for(step=1;step<=n;step<<=1);
        for(i=n;step;step>>=1)
            if(i-step>=0&&a[i-step]>=y)
                i-=step;
        g<<i<<"\n";
    }

    f.close();
    g.close();

    return 0;
}