Cod sursa(job #869662)

Utilizator bratiefanutBratie Fanut bratiefanut Data 1 februarie 2013 22:21:57
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<stdio.h>
int n,x,v[10000],m,k,tip;
int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d",&v[i]);
    scanf("%d",&k);
    for(int j=1;j<=k;j++)
    {
        scanf("%d%d",&tip,&x);
        int st=0, dr=n+1;
        if(tip==0)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x<v[m])
                dr=m;
                else
                st=m;
            }
            if(v[st]==x)
            printf("%d\n",st);
            else printf("-1\n");
        }
        else
        if(tip==1)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x>=v[m])
                st=m;
                else
                dr=m;
            }
            printf("%d\n",st);
        }
        else
        if(tip==2)
        {
            while(st+1<dr)
            {
                m=(st+dr)/2;
                if(x<=v[m])
                dr=m;
                else
                st=m;
            }
            printf("%d\n",dr);
        }
    }

    return 0;
}