Pagini recente » Cod sursa (job #159074) | Cod sursa (job #2467183) | Cod sursa (job #1979305) | Cod sursa (job #1220245) | Cod sursa (job #443551)
Cod sursa(job #443551)
#include<stdio.h>
int n, a[100001];
int binary_search01(int val)
{
int i,step;
for (step=1;step<n;step<<=1);
for (i=0;step;step>>=1)
if (i+step<=n&&a[i+step]<=val)
i+=step;
return i;
}
int binary_search2(int val)
{
int i,step;
for (step=1;step<n;step<<=1);
for (i=0;step;step>>=1)
if (i+step<=n&&a[i+step]<val)
i+=step;
return i+1;
}
void solve()
{
int x,q;
scanf("%d%d",&q,&x);
if (q==0)
{
if(a[binary_search01(x)]!=x)
printf("-1\n");
else
printf("%d\n",binary_search01(x));
}
if (q==1)
printf("%d\n",binary_search01(x));
if (q==2)
printf("%d\n",binary_search2(x));
}
int main()
{
int t;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&t);
for(int i=1;i<=t;i++)
solve();
return 0;
}