Cod sursa(job #2065171)

Utilizator StepHoria Stefan Step Data 13 noiembrie 2017 15:25:03
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[100001],L=16;
int cb1 (int x, int n)
{
    int pas=1<<L;
    int r=0;
    while (pas!=0)
    {
        if (r+pas<=n && v[r+pas]<=x)
            r+=pas;
        pas/=2;
    }
    return r;
}
int cb2 (int x, int n)
{
    int pas=1<<L;
    int r=0;
    while (pas!=0)
    {
        if (r+pas<=n && v[r+pas]<x)
            r+=pas;
        pas/=2;
    }
    r++;
    return r;
}
int main()
{
    int n,i,m,x,y;
    f>>n;
    for (i=1;i<=n;i++)
    {
        f>>v[i];
    }
    f>>m;
    for (i=1; i<=m ; i++)
    {
        f>>y>>x;
        if (y==0)
        {
            if (v[cb1(x,n)] == x)
                g<<cb1(x,n)<<'\n';
            else g<<-1<<'\n';
        }
        if (y==1)
            g<<cb1(x,n)<<'\n';
        if (y==2)
            g<<cb2(x,n)<<'\n';
    }
    return 0;
}