Cod sursa(job #670787)

Utilizator DumitracheIulianDumitrache Iulian DumitracheIulian Data 30 ianuarie 2012 09:38:26
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;

const int N=100001;
int v[N],n;
ifstream in ("cautbin.in");
ofstream out("cautbin.out");
int cautb2(int numar)
{
    int i,pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
        if(i+pas<=n && v[i+pas]<numar)
            i+=pas;
    if(v[i] < numar) return i;
}
int cautb1(int numar)
{
    int i,pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
        if(i+pas<=n && v[i+pas]<=numar)
            i+=pas;
    if(v[i] <= numar) return i;
}
int cautb0(int numar)
{
    int i,pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
        if(i+pas<=n && v[i+pas]<=numar)
            i+=pas;
    if(v[i] == numar) return i;
    return -1;
}
int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    int m; in>>m; int x,y;
    for(int i=0;i<m;i++)
    {
        in>>x>>y;
        switch(x)
        {
            case 0: out<<cautb0(y)<<"\n"; break;
            case 1: out<<cautb1(y)<<"\n"; break;
            case 2: out<<cautb2(y)+1<<"\n"; break;
        }
    }
    return 0;
}