Pagini recente » Cod sursa (job #1226235) | Cod sursa (job #1555003) | Cod sursa (job #2377797) | Cod sursa (job #2664871) | Cod sursa (job #1503051)
#include<cstdio>
using namespace std;
#define nmax 100007
int n,m,v[nmax],a,b;
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(){
int px;
freopen("cautbin.in","r", stdin);
freopen("cautbin.out","w", stdout);
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);
}
if(a==1){
printf("%d \n", cautbin(b));
}
if(a==2){
printf("%d \n", cautbin(b-1)+1);
}
}
return 0;
}