Pagini recente » Cod sursa (job #56467) | Cod sursa (job #2131187) | Cod sursa (job #2588549) | Cod sursa (job #1305462) | Cod sursa (job #2181175)
#include <cstdio>
#include <math.h>
using namespace std;
FILE* FIN=freopen("cautbin.in","r",stdin);
FILE* FOUT=freopen("cautbin.out","w",stdout);
int n,logn,v[100000];
void cer0()
{
int x,i;
scanf("%d",&x);
for(i=-1;logn;logn<<=1)
if(v[i+logn]<=x)
i+=logn;
if(v[i]==x)
printf("%d",i+1);
else
printf("-1");
}
void cer1()
{
int x,i;
scanf("%d",&x);
for(i=n-1;logn;logn<<=1)
if(v[i-logn]>=x)
i-=logn;
printf("%d",i+1);
}
void cer2()
{
int x,i;
scanf("%d",&x);
for(i=-1;logn;logn<<=1)
if(v[i+logn]<x)
i+=logn;
printf("%d",i+1);
}
int main()
{
int q,i;
char cer;
scanf("%d",&n);
for(logn=1;logn<=n;logn<<=1);
for(i=0;i<n;i++)
scanf("%d",&v[i]);
scanf("%d",&q);
for(i=0;i<q;i++)
{
scanf("%c",&cer);
if(cer=='0')
cer0();
else
{
if(cer=='1')
cer1();
else
cer2();
}
}
return 0;
}