Cod sursa(job #1264146)

Utilizator sefubanilorSefu Banilor sefubanilor Data 15 noiembrie 2014 16:03:55
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <fstream>

using namespace std;

int main()
{
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");
    long mij,primul,ultimul,intre,sol,i,n,v[100001],x,y;
    in>>n;
    for(i=1;i<=n;i++) in>>v[i];
    primul=1;
    ultimul=n;
    in>>intre;
    for(i=1;i<=intre;i++)
    {
        in>>x>>y;
        primul=1;ultimul=n;sol=-1;
        if(x==0)
        {
            while(primul<=ultimul)
            {
                mij=(primul+ultimul)/2;
                if(y<v[mij]) ultimul=mij-1;
                if(y>v[mij]) primul=mij+1;
                if(y==v[mij]) {sol=mij;primul=mij+1;}
            }
            out<<sol<<'\n';
        }
        if(x==1)
        {
            sol=-1;
            while(primul<=ultimul)
            {
                mij=(primul+ultimul)/2;
                if(v[mij]<=y) {sol=mij;primul=mij+1;}
                else ultimul=mij-1;
            }
            out<<sol<<'\n';
        }
        if(x==2)
        {
            sol=-1;
            while(primul<=ultimul)
            {
                mij=(primul+ultimul)/2;
                if(v[mij]>=y) {sol=mij;ultimul=mij-1;}
                else primul=mij+1;
            }
            out<<sol<<'\n';
        }
    }
    return 0;
}