Cod sursa(job #316797)
#include<stdio.h>
#define N 100002
int v[N];
void citire()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int n,m;
scanf("%d",&n);
for (int i=1; i<=n; ++i) scanf("%d",&v[i]);
scanf("%d",&m);
int logn;
for (logn=1; logn<=n; logn<<=1);
while (m)
{
int t,x;
scanf("%d%d",&t,&x);
if (t<2)
{
int lg,i;
for (lg=logn, i=0; lg;lg>>=1)
if (i+lg<=n&&v[i+lg]<=x)
i+=lg;
if (!t&&v[i]!=x)
printf("-1\n");
else printf("%d\n",i);
}
else
{
int lg,i;
for (lg=logn,i=n;lg;lg>>=1)
if (i-lg&&v[i-lg]>=x)
i-=lg;
printf("%d\n",i);
}
--m;
}
}
int main()
{
citire();
return 0;
}