Pagini recente » Cod sursa (job #523772) | Cod sursa (job #2692586) | Cod sursa (job #476) | Cod sursa (job #2557082) | Cod sursa (job #1503059)
#include<cstdio>
using namespace std;
#define nmax 100007
int n,m,a,b,v[nmax];
int cautbin(int val){
int start =1,step= (1<<20);
for(; step;step>>=1){
int index=start+step;
if(index>n)continue;
if(v[index]<=val)
start=index;
}
return start;
}
int main(){
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int px;
scanf("%d", &n);
for(int i=1;i<=n;++i)scanf("%d", &v[i]);
scanf("%d", &m);
for(; m; --m){
scanf("%d %d", &a, &b);
if(a==0){
px=cautbin(b);
if(v[px]==b)printf("%d \n", px);
else printf("%d \n", -1);
}
else if(a==1){
printf("%d \n", cautbin(b));
}
else if(a==2){
printf("%d \n", cautbin(b-1)+1);
}
}
return 0;
}