Pagini recente » Cod sursa (job #25837) | Cod sursa (job #748519) | Cod sursa (job #2124580) | Cod sursa (job #369589) | Cod sursa (job #1323046)
#include <cstdio>
int n,m,v[100001],op,x,y,r=1;
int c0(int a)
{
int i,pas=r;
for(i=0;pas;pas>>=1)
if(v[i+pas]<=a && i+pas<=n)
i+=pas;
if(v[i]==a)
return i;
return -1;
}
int c1(int a)
{
int i,pas=r;
for(i=0;pas;pas>>=1)
if(v[i+pas]<=a && i+pas<=n)
i+=pas;
return i;
}
int c2(int a)
{
int i,pas=r;
for(i=n;pas;pas>>=1)
if(v[i-pas]>=a && i-pas>=1)
i-=pas;
if(v[i]==a)
return i;
return -1;
}
int main()
{
int i;
freopen("cautbin.in", "r", stdin);
// freopen("cautbin.out", "w", stdout);
scanf("%d ", &n);
while(r<=n)
r<<=1;
r>>=1;
for(i=1;i<=n;i++)
scanf("%d ", &v[i]);
scanf("%d ", &m);
for(i=1;i<=m;i++)
{
scanf("%d %d ", &op, &x);
if(op==0)
y=c0(x);
if(op==1)
y=c1(x);
if(op==2)
y=c2(x);
printf("%d\n", y);
}
return 0;
}