Cod sursa(job #1209920)

Utilizator robert.onesimRobert Onesim robert.onesim Data 18 iulie 2014 21:11:53
Problema Cautare binara Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100005];
int n,mid;
void caut0(int lo, int hi, int x)
{
    int sol=-1;
    while(lo<=hi)
    {
        mid=(lo+hi)/2;
        if(v[mid]<x) lo=mid+1;
        else
        {
            if(v[mid]>x)hi=mid-1;
            else {sol=mid;lo=mid+1;}
        }
    }
    fout<<sol<<"\n";
}
void caut1(int lo, int hi , int x)
{
    int sol;
    while(lo<hi)
    {
        mid=(lo+hi)/2;
        if(v[mid]>x) hi=mid;
        else {sol=mid; lo=mid+1;}
    }
    fout<<sol<<"\n";
}
void caut2(int lo, int hi, int x)
{
    while(lo<hi)
    {
        mid=(lo+hi)/2;
        if(v[mid]>=x) hi=mid;
        else lo=mid+1;
    }
    fout<<lo<<"\n";
}
int main()
{
    int m,a,b;
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>v[i];
    fin>>m;
    for(int i=1;i<=m;i++)
        {
            fin>>a>>b;
            if(a==0) caut0(1,n,b);
            else if(a==1) caut1(1,n,b);
                    else caut2(1,n,b);
        }

}