Cod sursa(job #1094295)

Utilizator FeriCsiki Francisc Alexandru Feri Data 29 ianuarie 2014 10:50:39
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[100001], n;

int intrebare0(int x)
{
    int i=0,pas=1<<16;
    while(pas!=0)
    {
        if(pas+i<=n && v[pas+i]<=x)
            i+=pas;
        pas/=2;
    }
    if(v[i]==x)
    {
        return i;
    }
    else
    {
        return -1;
    }
}
int intrebare1(int x)
{
    int i=0, pas=1<<16;
    while(pas!=0)
    {
        if(pas+i<=n && v[pas+i]<=x)
            i+=pas;
        pas/=2;
    }
    return i;
}
int intrebare2(int x)
{
    int i=0,pas=1<<16;
    while(pas!=0)
    {
        if(pas+i<=n && v[pas+i]<x)
            i+=pas;
        pas/=2;
    }
    return i+1;
}

int main()
{
    int j,r,l,m;
    in>>n;
    for(j=1;j<=n;j++)
    {
        in>>v[j];
    }
    in>>m;
    for(j=1;j<=m;j++)
    {
        in>>r>>l;
        if(r==0)
        {
            out<<intrebare0(l)<<'\n';
        }
        if(r==1)
        {
            out<<intrebare1(l)<<'\n';
        }
        if(r==2)
        {
            out<<intrebare2(l)<<'\n';
        }
    }
    return 0;
}