Cod sursa(job #2190619)

Utilizator mironMiron Lucia miron Data 31 martie 2018 12:41:05
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m, t,x, a[100001],i;
int cb0(int s,int d, int x)
{
    int ok=-1, mij;
    while(s<=d)
    {
        mij=(s+d)/2;
        if(a[mij]==x)
        {
            ok=mij;
            s=mij+1;
        }
        else if(a[mij]<x)s=mij+1;
        else d=mij-1;
    }
    return ok;
}
int cb1(int s,int d, int x)
{
    int ok=-1, mij;
    while(s<=d)
    {
        mij=(s+d)/2;
        if(a[mij]<=x)
        {
            ok=mij;
            s=mij+1;
        }
        else d=mij-1;
    }
    return ok;
}
int cb2( int s, int d, int x)
{
    int ok=-1, mij;
    while(s<=d)
    {
        mij=(s+d)/2;
        if(a[mij]>=x)
        {
            ok=mij;
            d=mij-1;
        }
        else s=mij+1;
    }
    return ok;
}
int main()
{
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>a[i];
    fin>>m;
    for(i=1; i<=m; i++)
    {
        fin>>t>>x;
        if(t==0)fout<<cb0(1,n,x)<<endl;
        if(t==1)fout<<cb1(1,n,x)<<endl;
        if(t==2)fout<<cb2(1,n,x)<<endl;
    }
    return 0;
}