Cod sursa(job #1426129)

Utilizator gratihira gratiela grati Data 28 aprilie 2015 23:30:14
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in"); ofstream g("cautbin.out");
int n,m,v[100010],i,j,M,a,b;
void e()
{	i=1;j=n;
    while(i<=j)
        {	M=(i+j)/2;
            if(v[M]<=b)i=M+1;
                else j=M-1;
        }
        M=(i+j)/2;
        if(v[M]>b)M--;
        if(v[M]==b) g<<M<<"\n";
        else g<<"-1"<<'\n';
}
void e1()
{	i=1;j=n;
    while(i<j)
        {	M=(i+j)/2;
            if(v[M]<=b)i=M+1;
                else j=M;
        }
        M=(i+j)/2;
        if(v[M]>b)--M;
        g<<M<<"\n";
}
void e2()
{	i=1;j=n;
    while(i<j)
        {	M=(i+j)/2;
            if(v[M]<b)i=M+1;
                else j=M;
        }
        M=(i+j)/2;
        if(v[M]<b)++M;
        g<<M<<"\n";
}
int main()
{	f>>n;
	for(i=1;i<=n;i++)f>>v[i];
    f>>m;
    while(m--)
    {	f>>a>>b;
        if(a==0)e();
        if(a==1)e1();
        if(a==2)e2();
    }
    return 0;
}