Cod sursa(job #853896)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 12 ianuarie 2013 14:53:08
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#define NMAX 100004
using namespace std;

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

int N,M,mP;
int V[NMAX];

int CautaM(int key)
{
    int i,step;
    for(i=0,step=mP;step;step>>=1)
        if(i+step<=N&&V[i+step]<=key)
            i+=step;
    return i;
}

int Cautam(int key)
{
    int i,step;
    for(i=0,step=mP;step;step>>=1)
        if(i+step<=N&&V[i+step]<key)
            i+=step;
    return i+1;
}

int main()
{
    int i,poz,op,x;
    in>>N;
    for(i=1;i<=N;i++)
        in>>V[i];
    for(mP = 1;mP<N;mP<<=1);
    in>>M;
    while(M--)
    {
        in>>op>>x;
        if(op==0){ poz = CautaM(x); if(V[poz]!=x)out<<"-1\n";else out<<poz<<'\n';}
        if(op==1){ poz = CautaM(x); out<<poz<<'\n';}
        if(op==2){ poz = Cautam(x); out<<poz<<'\n';}
    }
    return 0;
}