Cod sursa(job #798806)

Utilizator irinaneaguIrina Neagu irinaneagu Data 17 octombrie 2012 12:45:33
Problema Cautare binara Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1 kb
#include<stdio.h>
int main()
{int i,k,pas,n,m,v[100001],tip,x;
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;i++)
    scanf("%d",&v[i]);
scanf("%d",&m);
for(k=1;k<=m;k++)
    {scanf("%d%d",&tip,&x);
    if(tip==0)
        {i=0;
        pas=1<<16;
        while(pas!=0)
            {if(v[i+pas]>=x&&i+pas<=n-1)
                i+=pas;
            pas/=2;
            }
        if(i==0)
            printf("-1\n");
        else
            printf("%d\n",i);
        }
    else
    if(tip==1)
        {i=0;
        pas=1<<16;
        while(pas!=0)
            {if(v[i+pas]<=x&&i+pas<=n-1)
                i+=pas;
            pas/=2;
            }
        printf("%d\n",i+1);
        }
    else
    if(tip==2)
        {i=0;
        pas=1<<16;
        while(pas!=0)
            {if(v[i+pas]<=x&&i+pas<=n-1)
                i+=pas;
            pas/=2;
            }
        printf("%d\n",i-1);

        }
    }
return 0;
}