Cod sursa(job #2617967)

Utilizator jungleTUDOSE MIHAI-CRISTIAN jungle Data 23 mai 2020 13:41:24
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int optFirst(int v[],int n,int x)
{
    int i=0,p=(1<<16);
    while(p)
    {
        if(i+p<=n && v[i+p]<=x)
        {
            i+=p;
        }
        p/=2;
    }
    if(v[i]==x)
    {
        return i;
    }
    return -1;
}

int optSecond(int v[],int n,int x)
{
    int i=0,p=(1<<16);
    while(p)
    {
        if(i+p<=n && v[i+p]<=x)
        {
            i+=p;
        }
        p/=2;
    }
    return i;
}

int optThird(int v[],int n,int x)
{
    int i=0, p=(1<<16);
    while(p)
    {
        if(i+p<=n && v[i+p]<x)
        {
            i+=p;
        }
        p/=2;
    }
    return i+1;
}

int main()
{
    int v[100001],n,i,m,opt,c;
    f>>n;
    for(i=1; i<=n; i++)
    {
        f>>v[i];
    }
    f>>m;
    for(i=0; i<m; i++)
    {
        f>>opt>>c;
        if(opt==0)
        {
            g<<optFirst(v,n,c);
        }
        if(opt==1)
        {
            g<<optSecond(v,n,c);
        }
        if(opt==2)
        {
            g<<optThird(v,n,c);
        }
        g<<"\n";
    }
    return 0;
}