Cod sursa(job #1391014)

Utilizator petrenoxxPietreanu Andrei petrenoxx Data 17 martie 2015 16:01:18
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int v[100001], L, n, m, i, x, a;
long long pas;

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