Cod sursa(job #2165345)

Utilizator severutBogdan Sever-Cristian severut Data 13 martie 2018 11:53:48
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n,m,T,x;
int c[100000];
int cautbin_1 (int x)
{
    int poz=0;
    for (int i=1<<20;i>0;i=i>>1)
    {
        if (poz+i<=n)
            if (c[poz+i]<=x)
                poz+=i;
    }
    if (c[poz]==x)
        return poz;
    else
        return -1;
}
int cautbin_2 (int x)
{
    int poz=0;
    for (int i=1<<20;i>0;i=i>>1)
        if (poz+i<=n)
            if (c[poz+i]<=x)
                poz+=i;
    return poz;
}
int cautbin_3 (int x)
{
    int poz=0;
    for (int i=1<<20;i>0;i=i>>1)
        if (poz+i<=n)
            if (c[poz+i]<x)
                poz+=i;
    return poz+1;
}
int main()
{
    in>>n;
    for (int i=1;i<=n;++i)
        in>>c[i];
    in>>m;
    for (int i=1;i<=m;++i)
    {
        in>>T>>x;
        if (T==0)
            out<<cautbin_1(x)<<'\n';
        if (T==1)
            out<<cautbin_2(x)<<'\n';
        if (T==2)
            out<<cautbin_3(x)<<'\n';
    }
    return 0;
}