Cod sursa(job #1960622)

Utilizator SederfoMarius Vlad Sederfo Data 10 aprilie 2017 16:19:08
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.32 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("cautbin.in");
ofstream g ("cautbin.out");

int main()
{
    long long int st, dr, n, m, i, x, k;
    int v[100000], gasit, rasp, p;
    f >> n;
    for (i=1; i<=n; i++)
        f >> v[i];
    f >> k;
    for (i=1; i<=k; i++)
    {
        f >> p >> x;
        if (p==0)
        {
            st=1, dr=n, gasit=0;
            while (st<=dr)
            {
                m=(st+dr)/2;
                if (v[m]==x)
                    rasp=m, st=m+1, gasit=1;
                else if (v[m]<x)
                    st=m+1;
                else dr=m-1;
            }
            if (gasit)
                g << rasp << "\n";
            else g << -1;
        }
        else if (p==1)
        {
            st=1, dr=n;
            while (st<=dr)
            {
                m=(st+dr)/2;
                if (v[m]<=x)
                    rasp=m, st=m+1;
                else dr=m-1;
            }
            g << rasp << "\n";
        }
        else
        {
            st=1, dr=n;
            while (st<=dr)
            {
                m=(st+dr)/2;
                if (v[m]>=x)
                    rasp=m, dr=m-1;
                else st=m+1;
            }
            g << rasp << "\n";
        }
    }
    return 0;
}