Cod sursa(job #1671733)

Utilizator Rares09Rares I Rares09 Data 2 aprilie 2016 09:35:59
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
#include <fstream>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100001],n,m,a,b,i;
int cb0(int b,int n,int v[])
{
    int st=1,dr=n,mij;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (v[mij] <= b)
            st = mij + 1;
        else
            dr = mij - 1;
    }
    mij = (st + dr) / 2;
    if(v[m]>b)
        mij--;
    if (v[mij]==b)
            return mij;
    return -1;
}
int cb1(int b,int n,int v[])
{
    int st=1,dr=n,mij;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (v[mij] <= b)
            st = mij + 1;
        else
            dr = mij-1;
    }
    mij = (st + dr) / 2;
    if(v[mij]>b)
        mij--;
    return mij;
}
int cb2(int b,int n,int v[])
{
    int st=1,dr=n,mij;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (v[mij] < b)
            st = mij + 1;
        else
            dr = mij-1;
    }
    mij = (st + dr) / 2;
    if(v[mij]<b)
        mij++;
    return mij;
}
int main()
{
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>v[i];
    fin>>m;
    for(i=1; i<=m; i++)
    {
        fin>>a>>b;
        if(a==0)
            fout<<cb0(b,n,v)<<'\n';
        else if(a==1)
            fout<<cb1(b,n,v)<<'\n';
        else
            fout<<cb2(b,n,v)<<'\n';
    }
    return 0;
}