Cod sursa(job #2198000)

Utilizator TOnYbArOsAnUTony Barosanu Junior TOnYbArOsAnU Data 23 aprilie 2018 12:13:49
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,c,a[10001],nr,T;
int cautbin1(int x)
{
    int poz=0;
    for(int i=1<<30;i>0;i=i>>1)
    {
        if(poz+i<=n)
        if(a[poz+i]<=x)
        {
            poz+=i;
        }
    }
    if(a[poz]==x)
    return poz;
    else
        return -1;
}
int cautbin2(int x)
{
    int poz=0;
    for(int i=1<<30;i>0;i=i>>1)
    {
        if(poz+i<=n)
            if(a[poz+i]<=x)
            {
                poz+=i;
            }
    }
        return poz;
}
int cautbin3(int x)
{
    int poz=0;
    for(int i=1<<30;i>0;i=i>>1)
    {
        if(poz+i<=n)
            if(a[poz+i]<x)
            {
                poz+=i;
            }
    }
        return poz+1;
}
int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>a[i];

        in>>nr;
        for(int i=1;i<=nr;i++)
        {
            in>>T>>c;
            if(T==0)
            {
               out<<cautbin1(c)<<'\n';
            }
            if(T==1)
            {
                out<<cautbin2(c)<<'\n';
            }
            if(T==2)
            {
                out<<cautbin3(c)<<'\n';
            }
        }
    return 0;
}