Cod sursa(job #1252684)

Utilizator deea101Andreea deea101 Data 31 octombrie 2014 00:11:45
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#define NMAX 100001
using namespace std;

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

int N,v[NMAX],p=1;

int binsearch (int x)
{
    int i,step=p;

    for(i=0;step;step>>=1)
        if(i+step<=N && v[i+step]<=x)
            i+=step;

    return i;
}

int searchmore(int x)
{
    int i,step=p;

    for(i=0;step;step>>=1)
        if(i+step<=N && v[i+step]<x)
            i+=step;

    return i+1;
}

int main()
{
    f>>N;
    int i,q,t,x;
    for(i=1;i<=N;i++)
        f>>v[i];

    while(p<N)
        p<<=1;

    f>>q;
    while(q--)
    {
        f>>t>>x;

        if(t==0)
        {
            i=binsearch(x);
            if(v[i]==x)
                g<<i<<'\n';
            else g<<-1<<'\n';
        }
        else if (t==1)
            g<<binsearch(x)<<'\n';
        else g<<searchmore(x)<<'\n';
    }
}