Cod sursa(job #1166143)

Utilizator curajAndrei George curaj Data 3 aprilie 2014 11:52:23
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;

#define NMax 100005

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

int n,m;
int v[NMax];

int bs(int x)
{
    int step,j;
    for(step=1;step<=n;step<<=1);
    for(j=0;step;step>>=1)
        if(j+step<=n && v[j+step]<=x) j+=step;
    return j;
}

int main()
{
    int i,a,b,p;

    f>>n;
    for(i=1;i<=n;i++) f>>v[i];

    f>>m;
    for(i=1;i<=m;i++)
    {
        f>>a>>b;
        if(a==0)
        {
            p=bs(b);
            if(v[p]==b) g<<p<<"\n";
            else g<<"-1\n";
        }
        else if(a==1)
        {
            p=bs(b);
            g<<p<<"\n";
        }
        else
        {
            p=bs(b-1)+1;
            g<<p<<"\n";
        }
    }

    f.close();
    g.close();
    return 0;
}