Cod sursa(job #2073793)

Utilizator vladsftVlad Safta vladsft Data 23 noiembrie 2017 18:49:48
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001];
int main()
{
    int q, n, x, r = 0, pas, m, j;
    f >> n;
    for (int i = 1; i <= n; i++)
        f >> v[i];
    f >> m;
    for (j = 0; j < m; j++)
    {
        f >> q >> x;
        r = 0;
        pas = 1 << 16;
        if (q == 0 || q == 1)
        {
            while (pas != 0)
            {
                if (r + pas <= n && v[r + pas] <= x)
                    r += pas;
                pas /= 2;
            }
            //r++;
            if (q == 0)
                if (v[r] != x)
                    r = -1;
            g << r << '\n';
        }
        if (q == 2)
        {
            while (pas != 0){
                if (r + pas <= n && !(v[r + pas] >= x))
                    r += pas;
                pas /= 2;
            }
            r++;
            g << r << '\n';
        }
    }
    return 0;
}