Cod sursa(job #2199873)

Utilizator georgitTreista Georgiana georgit Data 29 aprilie 2018 14:33:28
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;
int n,i,q,tip,a[100001],nr;
int b0(int x)
{
    int st=0, dr=n;
    int mij;
    while(st<dr)
    {
        mij=(st+dr+1)/2;
        if(x<a[mij])
            dr=mij-1;
        else
            st=mij;
    }
    if(a[st]==x)
        return st;
    return -1;
}
int b1(int x)
{
    int st=0, dr=n;
    int mij;
    while(st<dr)
    {
        mij=(st+dr+1)/2;
        if(x<a[mij])
            dr=mij-1;
        else
            st=mij;
    }
    return st;
}
int b2(int x)
{
    int st=0, dr=n;
    int mij;
     while(st<dr)
    {
        mij=(st+dr)/2;
        if(x>a[mij])
            st=mij+1;
        else
            dr=mij;
    }
    return st;
}
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    for(i=1;i<=n;i++)
        f>>a[i];
    f>>q;
    for(i=1;i<=q;i++)
    {
        f>>tip>>nr;
        if(tip==0)
            g<<b0(nr)<<"\n";
        if(tip==1)
            g<<b1(nr)<<"\n";
        if(tip==2)
            g<<b2(nr)<<"\n";
    }
    return 0;
}