Cod sursa(job #1943000)

Utilizator CristeVladCristeVlad CristeVlad Data 28 martie 2017 12:17:34
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.58 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin ("caut.in");
ofstream fout ("caut.out");

int x[100000];

int main()
{
    int n, m, i, st, dr, mij, a, b, sol;
    fin >> n;
    for (i=0; i<n; i++)
        fin >> x[i];
    fin >> m;
    for (i=0; i<m; i++)
    {
        fin >> a >> b;
        if (a==0)
        {
            st=0;
            dr=n-1;
            while (st<=dr)
            {
                mij=(st+dr)/2;
                if (x[mij]>b)
                    dr=mij-1;
                else if (x[mij]<b)
                    st=mij+1;
                    else
                    {
                        sol=mij;
                        st=mij+1;
                    }
            }
            fout << sol+1 << "\n";
        }
        if (a==1)
        {
            st=0;
            dr=n-1;
            while (st<=dr)
            {
                mij=(st+dr)/2;
                if (x[mij]<=b)
                {
                    sol=mij;
                    st=mij+1;
                }
                else
                    dr=mij-1;
            }
            fout << sol+1 << "\n";
        }
        if (a==2)
        {
            st=0;
            dr=n-1;
            while (st<=dr)
            {
                mij=(st+dr)/2;
                if (x[mij]>=b)
                {
                    sol=mij;
                    dr=mij-1;
                }
                else
                    st=mij+1;
            }
            fout << sol+1 << "\n";
        }
    }
    return 0;
}