Cod sursa(job #2261098)

Utilizator TOnYbArOsAnUTony Barosanu Junior TOnYbArOsAnU Data 15 octombrie 2018 22:11:21
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,a[100001],q,x,y;
void cautbin1(int k)
{
    int poz=0;
    for(int i=1<<30;i>0;i=i>>1)
    {
        if(poz+i<=n)
            if(a[poz+i]<=k)
            {
                poz+=i;
            }
    }
    if(a[poz]==k)out<<poz<<'\n';
    else out<<-1<<'\n';
}
void cautbin2(int k)
{
    int poz=0;
    for(int i=1<<30;i>0;i=i>>1)
    {
        if(poz+i<=n)
            if(a[poz+i]<=k)
            {
                poz+=i;
            }
    }
    out<<poz<<'\n';
}
void cautbin3(int k)
{
    int poz=0;
    for(int i=1<<30;i>0;i=i>>1)
    {
        if(poz+i<=n)
            if(a[poz+i]<k)
            {
                poz+=i;
            }
    }
    out<<poz+1<<'\n';
}
int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>a[i];
    }
    in>>q;
    for(int i=1;i<=q;i++)
    {
        in>>x>>y;
        if(x==0)cautbin1(y);
        if(x==1)cautbin2(y);
        if(x==2)cautbin3(y);
    }
    return 0;
}