Cod sursa(job #810242)

Utilizator cocoshilaClaudiu cocoshila Data 9 noiembrie 2012 22:28:14
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>
int n,m,v[100005];

int caut0(int x)
{
    int i, pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
        if(i+pas<=n && v[i+pas]<=x)
            i+=pas;
    if(v[i]!=x) return -1;
    return i;
}

int caut1(int x)
{
    int i, pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
        if(i+pas<=n && v[i+pas]<=x)
            i+=pas;
    return i;
}

int caut2(int x)
{
    int i, pas=1<<16;
    for(i=0;pas!=0;pas>>=1)
        if(i+pas<=n && v[i+pas]<x)
            i+=pas;
    return i+1;
}

int main()
{
    int i,x,y;
    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",&y,&x);
       if(y==0) printf("%d\n",caut0(x));
       if(y==1) printf("%d\n",caut1(x));
       if(y==2) printf("%d\n",caut2(x));
    }
    return 0;
}