Pagini recente » Cod sursa (job #2986273) | Cod sursa (job #464115) | Cod sursa (job #258901) | Cod sursa (job #1254982) | Cod sursa (job #251601)
Cod sursa(job #251601)
#include <stdio.h>
int a[100100], n,m;
int main()
{
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", &a[i]);
scanf("%d", &m);
for (int i=1;i<=m;++i)
{
int op,nr;
scanf("%d%d", &op,&nr);
if (op == 0)
{
int ret = 0;
for (int x=1<<18;x>0;x/=2) if(ret+x <= n)
if (a[ret+x] <= nr) ret+=x;
if (a[ret] != nr) printf("-1\n"); else printf("%d\n", ret);
}
if (op == 1)
{
int ret = 0;
for (int x=1<<18;x>0;x/=2) if(ret+x <= n)
if (a[ret+x] <= nr) ret+=x;
printf("%d\n", ret);
}
if (op == 2)
{
int ret = n;
for (int x=1<<18;x>0;x/=2) if(ret-x > 0)
if (a[ret-x] >= nr) ret-=x;
printf("%d\n", ret);
}
}
return 0;
}