Cod sursa(job #2068037)

Utilizator dianamariaDiana Cataros dianamaria Data 17 noiembrie 2017 09:27:48
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>

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