Cod sursa(job #1611388)
| Utilizator | 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;
}
