Cod sursa(job #1472127)

Utilizator Tomi98Osvath Tamas Tomi98 Data 16 august 2015 13:52:49
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <fstream>

using namespace std;

int hi, lo, a, b, mid;
int n, m, v[100001];
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    for (int i=1; i<=n; i++)
        f>>v[i];
    f>>m;
    for (int j=1; j<=m; j++)
    {
        f >> a >> b;
        hi = n;
        lo = 1;
        mid = 0;
        bool ok = 0 ;
        if (a == 0)
        {
            while (hi - lo > 1)
            {
                mid = lo + (hi - lo)/2;
                if (v[mid] >= b) lo = mid;
                    else hi = mid;
                if (v[mid] == b) ok = 1;
            }
            if (ok == 1) g<< lo << '\n';
                else g << "-1" << '\n';
        }

        if (a == 1)
        {
            while (hi - lo > 1)
            {
                mid = lo + (hi - lo)/2;
                if (v[mid] <= b) lo = mid;
                    else hi = mid;
            }
            g << lo << '\n';
        }

        if (a == 2)
        {
            while (hi - lo > 1)
            {
                mid = lo + (hi - lo)/2;
                if (v[mid] <= b) hi = mid;
                    else lo = mid;
            }
            g << hi << '\n';
        }
    }
    return 0;
}