Pagini recente » Cod sursa (job #403291) | Cod sursa (job #2930216) | Cod sursa (job #1834410) | Cod sursa (job #533771) | Cod sursa (job #251596)
Cod sursa(job #251596)
#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<<16;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<<17;x>0;x/=2) if(ret+x <= n)
if (a[ret+x] <= nr) ret+=x;
while(a[ret+1] <= nr) ++ret;
printf("%d\n", ret);
}
if (op == 2)
{
int ret = 0;
for (int x=1<<17;x>0;x/=2) if(ret+x <= n)
if (a[ret+x] <= nr) ret+=x;
while(a[ret] <= nr) ++ret;
printf("%d\n", ret);
}
}
return 0;
}