Cod sursa(job #2051258)

Utilizator LXGALXGA a LXGA Data 28 octombrie 2017 18:12:01
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
long long v[100001];
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int cautbin1(int l,int r,int x)
{
    if(l==r)
        return l;
    int mid=(l+r+1)/2;
    if(x<v[mid])
        return cautbin1(l,mid-1,x);
    else
        return cautbin1(mid,r,x);

}
int cautbin2(int l,int r,int x)
{
    if(l==r)
        return l;
    int mid=(l+r)/2;
    if(x<=v[mid])
        return cautbin2(l,mid,x);
    else
        return cautbin2(mid+1,r,x);
}
int main()
{
    long long n,i,k,m;
    cin>>n;

    for(i=1;i<=n;i++)
    {
        cin>>v[i];
    }
    cin>>m;
    short a;
    int poz;
    for(i=1;i<=m;i++)
    {
        cin>>a>>k;
        if(a==0)
        {
            poz=cautbin1(1,n,k);
            if(v[poz]!=k)
                cout<<"-1";
            else
                cout<<poz;

        }
        if(a==1)
        {
            poz=cautbin1(1,n,k);
            cout<<poz;
        }
        if(a==2)
        {
            poz=cautbin2(1,n,k);
            cout<<poz;
        }
        cout<<"\n";
    }
    return 0;
}