Pagini recente » Cod sursa (job #2934153) | Cod sursa (job #1982917) | Cod sursa (job #1284687) | Cod sursa (job #1106943) | Cod sursa (job #239370)
Cod sursa(job #239370)
#include<stdio.h>
int n;
int a[100005];
int bs1 (int x)
{
int mid,st,dr;
for (st=1,dr=n;st<=dr;)
{
mid = st + (dr-st)/2;
if (x<a[mid])
dr=mid-1;
else
if (x>a[mid])
st=mid+1;
else
return mid;
}
return 0;
}
int bs2 (int x)
{
int mid,st,dr,w;
for (st=1,dr=n;st<=dr;)
{
mid=st+(dr-st)/2;
if (x<a[mid])
dr=mid-1;
else
st=mid+1,w=mid;
}
return w;
}
int bs3 (int x)
{
int mid,st,dr,w;
for (st=1,dr=n;st<=dr;)
{
mid=st+(dr-st)/2;
if (x<a[mid])
dr=mid-1,w=mid;
else
st=mid+1;
}
return w;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
int i,m,r,c,x;
for (i=1;i<=n;++i)
scanf("%d",&a[i]);
scanf("%d",&m);
for (;m>0;--m)
{
scanf("%d%d",&c,&x);
if (!c)
{
r=bs1(x);
if (r)
printf("%d\n",r);
else
printf("-1\n");
}
else
if (c==1)
printf("%d\n",bs2(x));
else
printf("%d\n",bs3(x));
}
return 0;
}