Cod sursa(job #1380050)

Utilizator TimoteiCopaciu Timotei Timotei Data 6 martie 2015 21:25:50
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.47 kb
#include<iostream>
#include<fstream>

using namespace std ;
int n,i,p,v[100009],t,l1,l2,mij,k,a,x;
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
     f>>t;
    for(i=1;i<=t;i++)

    {
        f>>a>>x;
        if(a==0)
        {
            l1=1;
            l2=n;
            k=0;
            while(l1<=l2)
            {
                mij=(l1+l2)/2;
                if(v[mij]==x&&v[mij+1]!=x){k=1;p=mij;break;}
                else if(x<v[mij])l2=mij-1;
                    else l1=mij+1;
            }
            if(k==1)g<<p<<"\n";
            else g<<"-1"<<"\n";
        }
        if(a==1)
        {
             l1=1;
            l2=n;
            k=0;
            while(l1<=l2)
            {
                mij=(l1+l2)/2;
                if(v[mij]<=x&&v[mij+1]!=x){k=1;p=mij;break;}
                else if(x<v[mij])l2=mij-1;
                    else l1=mij+1;
            }
            if(k==1)g<<p<<"\n";
            else g<<"-1"<<"\n";
        }
        if(a==2)

        {
             l1=1;
            l2=n;
            k=0;
            while(l1<=l2)
            {
                mij=(l1+l2)/2;
                if(v[mij]>=x&&v[mij-1]<x){k=1;p=mij;break;}
                else if(x<=v[mij])l2=mij-1;
                    else l1=mij+1;
            }
            if(k==1)g<<p<<"\n";
            else g<<"-1"<<"\n";
        }

    }
    return 0;
}