Pagini recente » Cod sursa (job #700906) | Cod sursa (job #2089659) | Cod sursa (job #2437982) | Cod sursa (job #2563425) | Cod sursa (job #1167319)
#include<cstdio>
const int N=100000;
int v[N+1];
int n,t,quest,x;
void read(){
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
scanf("%d",&t);
}
void init(){
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
read();
}
int bsearch(){
int l=1,r=n,m;
//case 0
if(quest==0){
while(l<r-1){
m=(l+r)/2;
if(v[m]<=x)
l=m;
else
r=m;
}
if(v[r]==x)
return r;
if(v[l]==x)
return l;
return -1;
}
//case 1
if(quest==1){
while(l<r-1){
m=(l+r)/2;
if(v[m]<=x)
l=m;
else
r=m;
}
if(v[r]<=x)
return r;
return l;
}
//case2
while(l<r-1){
m=(l+r)/2;
if(v[m]<x)
l=m;
else
r=m;
}
if(v[l]>=x)
return l;
return r;
}
int main(){
init();
while(t>0){
t--;
scanf("%d%d",&quest,&x);
printf("%d\n",bsearch());
}
return 0;
}