Cod sursa(job #812143)
#include<stdio.h>
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int n,ma,i,t,st,dr,y,p,j,m;
scanf("%d",&n);
int v[n+5];
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
scanf("%d",&ma);
for(i=1;i<=ma;i++)
{
scanf("%d%d",&t,&y);
p=-1;
//pt t=0
if(t==0)
{
dr=n;
st=1;
while(dr>=st)
{
if(v[(dr+st)/2]==y)
{
p=(dr+st)/2;
break;
}
else
if(v[(dr+st)/2]<y)
st=(dr+st)/2;
else
dr=(dr+st)/2;
}
for(j=p;j<=dr;j++)
if(v[j]!=p)
{
printf("%d\n",j-1);
break;
}
}
//pt t=1
else
if(t==1)
{
p=-1;
dr=n;
st=1;
while(dr>st)
{
m=(st+dr)/2;
if(v[m]<=y)
st=m+1;
else
dr=m;
}
p=(st+dr)/2;
if(v[(st+dr)/2]>y)
p--;
printf("%d\n",p);
}
//pt t=2
else
{
dr=n;
st=1;
while(dr>st)
{
m=(st+dr)/2;
if(v[m]<y)
st=m+1;
else
dr=m;
}
m=(st+dr)/2;
if(v[m]<y)
m--;
printf("%d\n",m);
}
}
return 0;
}