Cod sursa(job #1264164)

Utilizator RaulBodrogeanMircea-Raul Bodrogean RaulBodrogean Data 15 noiembrie 2014 16:15:18
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.54 kb
#include <fstream>

using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int main()
{
    int m,v[100002],n,i,st,dr,mijl,sol,x;
    in>>n;
    for(i=1; i<=n; i++)
    {
        in>>v[i];
    }
    int nrint;
    in>>nrint;
    for(i=1; i<=nrint; i++)
    {
        in>>m;
        in>>x;
        if(m==0)
        {
            st=1;
            dr=n;
            sol=-1;
            while(st<=dr)
            {
                mijl=(st+dr)/2;
                if(x<v[mijl])
                    dr=mijl-1;
                else if(x>v[mijl])
                    st=mijl+1;
                else if(x==v[mijl])
                {sol=mijl;
                st=mijl+1;}
            }
            out<<sol<<'\n';
        }
        if(m==1)
        {
            sol=-1;
            st=1;
            dr=n;
            while(st<=dr)
            {
                mijl=(st+dr)/2;
                if(v[mijl]<=x)
                {
                    sol=mijl;
                    st=mijl+1;
                }
                else dr=mijl-1;

            }
            out<<sol<<'\n';
        }
        if(m==2)
        {
            sol=-1;
            st=1;
            dr=n;
            while(st<=dr)
            {
                mijl=(st+dr)/2;
                if(v[mijl]>=x)
                {

                    sol=mijl;
                    dr=mijl-1;
                }
                else st=mijl+1;
            }
            out<<sol<<'\n';
        }
    }

    return 0;
}