Cod sursa(job #2066105)

Utilizator WeezyAndrei Bogdan Weezy Data 14 noiembrie 2017 18:19:42
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include <fstream>

using namespace std;

const int L = 16;

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

int v[100001];

int main()
{
    int pas, r, n, m, i, x, tip;
    in >> n;
    for(i = 1; i <= n; i++)
        in >> v[i];
    in >> m;
    for(i = 1; i <= m; i++)
    {
        in >> tip;
        in >> x;
        if(tip == 0)
        {
            pas = 1 << L;
            r = 0;
            while(pas != 0)
            {
                if(r+pas <= n && v[r+pas] <= x)
                {
                    r+=pas;
                }
                pas /= 2;
            }
            if(r == 0 || v[r] != x)
                r = -1;
        }
        else if(tip == 1)
        {
            pas = 1 << L;
            r = 0;
            while(pas != 0)
            {
                if(r+pas <= n && v[r+pas] <= x)
                {
                    r+=pas;
                }
                pas /= 2;
            }
        }
        else if(tip == 2)
        {
            pas = 1 << L;
            r = 0;
            while(pas != 0)
            {
                if(r+pas <= n && v[r+pas] < x)
                {
                    r+=pas;
                }
                pas /= 2;
            }
            r++;
        }
        out << r << "\n";
    }

    return 0;
}