Cod sursa(job #1150482)

Utilizator cristina_borzaCristina Borza cristina_borza Data 23 martie 2014 09:27:56
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,a[1001],i,ex,v,m;
int cautMaxim(int v);
int cautMinim(int v);
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>ex>>v;
        if(ex==0)
        {
            fout<<cautMaxim(v)<<'\n';
        }
        if(ex==1)
        {
            fout<<cautMaxim(v)<<'\n';
        }
        if(ex==2)
        {
            fout<<cautMinim(v)<<'\n';
        }
    }
}
int cautMaxim(int x)
{
    int p=1,u=n,mid;
    while(p<=u)
    {
        mid=(p+u)/2;
        if(x>=a[mid])
        {
            p=mid+1;
        }
        else
        {
            u=mid-1;
        }
    }
    if (a[u]==x)
        return u;
    else
        return -1;

}
int cautMinim(int x)
{
    int p=1,u=n,mid;
    while (p<=u)
    {
        mid=(p+u)/2;
        if (x<=a[mid])
        {
            u=mid-1;
        }
        else
        {
            p=mid+1;
        }
    }
    if (a[p]==x)
        return p;
    else
        return -1;

}