Cod sursa(job #1611388)

Utilizator ASTELOTudor Enescu ASTELO Data 24 februarie 2016 08:36:23
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
#include<cstdio>
int n,m,v[100001],i,j,k,x,y;
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",&x,&y);
    int l1,l2,mid,o=-1;
    if(x==0)
        {
        l1=1;
        l2=n;
        while(l1<=l2)
            {
            mid=(l1+l2)/2;
            if(v[mid]==y)
                {
                o=mid;
                l1=mid+1;
                }
            else
                if(v[mid]>y)
                    l2=mid-1;
                else
                    l1=mid+1;
            }
        printf("%d\n",o);
        }
    if(x==1)
        {
        l1=1;
        l2=n;
        while(l1<=l2)
            {
            mid=(l1+l2)/2;
            if(v[mid]<=y)
                {
                o=mid;
                l1=mid+1;
                }
            else
                l2=mid-1;
            }
        printf("%d\n",o);
        }
    if(x==2)
        {
        l1=1;
        l2=n;
        while(l1<=l2)
            {
            mid=(l1+l2)/2;
            if(v[mid]>=y)
                {
                o=mid;
                l2=mid-1;
                }
            else
                l1=mid+1;
            }
        printf("%d\n",o);
        }
    }
return 0;
}