Pagini recente » Cod sursa (job #2811815) | Cod sursa (job #1426731) | Cod sursa (job #2481840) | Cod sursa (job #2766240) | Cod sursa (job #1336851)
#include <cstdio>
#define nmax 100010
long n,m;
long vt[nmax];
long logn;
void read();
void solve();
int main(){
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
read();
solve();
return 0;
}
void read(){
scanf("%ld ",&n);
for(int i = 1;i <= n;i++)scanf("%ld ",&vt[i]);
scanf("%ld ",&m);
}
void solve(){
long t,x,l,i;
for(logn = 1;logn <= n;logn <<= 1);
while(m--){
scanf("%ld %ld ",&t,&x);
if(t < 2){
for(l = logn,i = 0;l;l >>= 1){
if(i + l <= n && vt[i + l] <= x){
i += l;
}
}
if(!t && vt[i] != x)printf("-1\n");
else printf("%ld\n",i);
continue;
}
for(l = logn,i = n;l;l >>= 1){
if(i - l > 0 && vt[i - l] >= x)i -= l;
}
printf("%ld\n",i);
}
}