Cod sursa(job #670784)

Utilizator anca1243Popescu Anca anca1243 Data 30 ianuarie 2012 09:33:42
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
const int N=100001;
int i,m,n,v[N];
int cautbin0 (int b)
{
    int i,pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
    {
        if(i+pas<=n && v[i+pas]<=b)
        {
            i+=pas;
        }
    }
    if (v[i]==b) return i;
    return -1;
}
int cautbin1 (int b)
{
    int i,pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
    {
        if(i+pas<=n && v[i+pas]<=b)
        {
            i+=pas;
        }
    }
    return i;
}
int cautbin2 (int b)
{
    int i,pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
    {
        if(i+pas<=n && v[i+pas]<b)
        {
            i+=pas;
        }
    }
    return i+1;
}

int main()
{
    int a,x;
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
    }
    in>>m;
    while (m>0)
    {
        in>>a>>x;
        if(a==0)
            out<<cautbin0(x)<<'\n';
        if(a==1)
            out<<cautbin1(x)<<'\n';
        if(a==2)
            out<<cautbin2(x)<<'\n';
        m--;
    }
    return 0;
}