Cod sursa(job #2068262)

Utilizator lucaperjuLuca Perju Verzotti lucaperju Data 17 noiembrie 2017 15:06:41
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>

using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int v[150003];
int main()
{
    int pas=1<<17,i,n,r,c,m,x;
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    in>>m;
    for(i=1; i<=m; i++)
    {
        in>>c>>x;
        r=0;
        pas=1<<17;
        if(c==0)
        {
            while(pas)
            {
                if(v[r+pas]<=x && r+pas<=n)
                {
                    r+=pas;
                }
                pas/=2;
            }
            if(v[r]!=x)
                out<<-1<<'\n';
            else
                out<<r<<'\n';
        }
        else if(c==1)
        {
            while(pas)
            {
                if(v[r+pas]<=x && r+pas<=n)
                {
                    r+=pas;
                }
                pas/=2;
            }
            out<<r<<'\n';
        }
        else if(c==2)
        {
            while(pas)
            {
                if(v[r+pas]<x && r+pas<=n)
                {
                    r+=pas;
                }
                pas/=2;
            }
            out<<r+1<<'\n';
        }
    }
    return 0;
}