Cod sursa(job #798812)

Utilizator muscaTudose Vlad-Adrian musca Data 17 octombrie 2012 12:52:47
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <cstdio>
using namespace std;
int n,m,i,j,tip,a,b;
int v[100001];
int BIN0(int k)
{
    int st,dr,med;
    st=1; dr=n;
    while(st<=dr)
    {
            med=(st+dr)/2;
            if(v[med]==k)
                st=med+1;
            else
                dr=med-1;
    }
    med=(st+dr)/2;
    return med;

}
int BIN1(int k)
{
    int st,dr,med;
    st=1; dr=n;
    while(st<=dr)
    {
            med=(st+dr)/2;
            if(v[med]<=k)
                st=med+1;
            else
                dr=med-1;
    }
    med=(st+dr)/2;
    return med;

}
int BIN2(int k)
{
    int st,dr,med;
    st=1; dr=n;
    while(st<=dr)
    {
            med=(st+dr)/2;
            if(v[med]==k)
                dr=med-1;
            else
                st=med+1;
    }
    return med;

}
int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&tip,&a);
        if(tip==0) b=BIN0(a);
        if(tip==1) b=BIN1(a);
        if(tip==2) b=BIN2(a);
        printf("%d\n",b);
    }

    return 0;
}