Cod sursa(job #2067935)

Utilizator dianamariaDiana Cataros dianamaria Data 16 noiembrie 2017 23:13:37
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 n,v[N];
int cautbin(int k,int x)
{
    int pas=1<<16,r=0;
    if(k==0)
    {
        while(pas)
        {
            if(r+pas<=n && v[r+pas]<=x)
            {
                if(v[r+pas]==x)
                    return r+pas;
                r+=pas;
            }
            pas/=2;
        }
        return -1;
    }
    if(k==1)
    {
        while(pas)
        {
            if(r+pas<=n&&v[r+pas]<=x)
                r+=pas;
            pas/=2;
        }
        return r;
    }
    if(k==2)
    {
        while(pas)
        {
            if(r+pas<=n&&v[r+pas]<x)
                r+=pas;
            pas/=2;
        }
        return r+1;
    }
    return 0;
}

int main()
{
    int m,i,k,x;
    in>>n;
    for (i=1;i<=n;i++)
        in>>v[i];
    in>>m;
    for (i=1;i<=m;i++)
    {
        in>>k>>x;
        out<<cautbin(k,x)<<"\n";
    }
    return 0;
}