Pagini recente » Cod sursa (job #1428308) | Cod sursa (job #3191259) | Cod sursa (job #1081184) | Cod sursa (job #1223373) | Cod sursa (job #656785)
Cod sursa(job #656785)
#include <algorithm>
#include <stdio.h>
using namespace std;
#define N_MAX 100001
int a[N_MAX];
int op, x, i, j, n, m;
int main(){
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(i = 1; i <= n; i ++)
scanf("%d", &a[i]);
int LOG, log;
for(LOG = 1; LOG < n; LOG <<= 1);
scanf("%d", &m);
for(i = 1; i <= m; i ++){
scanf("%d %d", &op, &x);
switch(op){
case 0:
for(log = LOG, j = 1; log; log >>= 1)
if(j + log <= n && a[j + log] <= x)
j += log;
if(a[j] != x)
printf("-1\n");
else
printf("%d\n", j);
break;
case 1:
for(log = LOG, j = 1; log; log >>= 1)
if(j + log <= n && a[j + log] <= x)
j += log;
printf("%d\n", j);
break;
case 2:
for(log = LOG, j = 0; log; log >>= 1)
if(j + log <= n && a[j + log] < x)
j += log;
printf("%d\n", j + 1);
break;
}
}
return 0;
}