Cod sursa(job #1423781)

Utilizator george99Darie George george99 Data 22 aprilie 2015 18:00:20
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,v[100001],i,j,k,mij,ok=0;
int x,y;
void solve0()
{
    i=1;
    j=n;
    while (i<=j)
        {   mij=(i+j)/2;
            if(v[mij]<=y)i=mij+1;
                        else j=mij-1;
        }
    mij=(i+j)/2;
    if(v[mij]>y)mij--;
    if(v[mij]==y)g<<mij<<"\n";
        else g<<"-1";

}
void solve1()
{

    i=1;
    j=n;
    while (i<j)
        {   mij=(i+j)/2;
            if(v[mij]<=y)i=mij+1;
                        else j=mij;
        }
    mij=(i+j)/2;
    if(v[mij]>y)--mij;
    g<<mij<<"\n";

}
void solve2()
{

    i=1;
    j=n;
    while (i<j)
        {   mij=(i+j)/2;
            if(v[mij]<y)i=mij+1;
                        else j=mij;
        }
    mij=(i+j)/2;
    if(v[mij]<y)++mij;
    g<<mij;
}
int main()
{   f>>n;
    for (i=1;i<=n;i++)f>>v[i];
    f>>m;
    for (k=1;k<=m;k++)
    {
        f>>x>>y;
        if (x==0)solve0();
        else if (x==1)solve1();
        else solve2();
    }
    g.close();
    return 0;
}