Pagini recente » Cod sursa (job #1070487) | Cod sursa (job #2465080) | Cod sursa (job #2837019) | Cod sursa (job #897976) | Cod sursa (job #696058)
Cod sursa(job #696058)
#include <cstdio>
int f[100005];
int main( ) {
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int n,i,x,ld,mij,ls,a,e,m;
scanf("%d",&n);
for(i=1;i<=n;++i){
scanf("%d",&f[i]);
}
scanf("%d",&m);
for(e=1;e<=m;++e){
scanf("%d %d",&a,&x);
ls=1;ld=n;
if(a==0){
int k=124;
for(;ls<=ld;) {
mij=(ls+ld)/2;
if(f[mij]<=x){
ls=mij+1;
}
else{
ld=mij-1;
}
}
mij=(ls+ld)/2;
if (f[mij]>x){
--mij;
}
if (f[mij]==x){
printf("%d\n",mij);
k=0;
}
if(k!=0){
printf("-1");
}
}
else if(a==1){
for(;ls<ld;){
mij=(ls+ld)/2;
if (f[mij]<=x){
ls = mij + 1;
}
else{
ld = mij;
}
}
mij=(ls + ld)/2;
if (f[mij]>x){
--mij;
}
printf("%d\n",mij);
}
else if(a==2){
for(;ls < ld;) {
mij = (ls + ld) / 2;
if (f[mij]<x){
ls=mij+1;
}
else {
ld=mij;
}
}
mij = (ls + ld)/2;
if(f[mij]<x){
++mij;
}
printf("%d\n",mij);
}
}
return 0;
}