Pagini recente » Cod sursa (job #527804) | Cod sursa (job #534511) | Cod sursa (job #1792595) | Cod sursa (job #613106) | Cod sursa (job #2795248)
#include <iostream>
using namespace std;
const int NMAX = 100000;
int n, m, p = 1, a[NMAX + 1];
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
while(p < n) p <<= 1;
for(int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
scanf("%d", &m);
while(m--) {
int op, x;
scanf("%d%d", &op, &x);
if(op == 0) {
int i = -1, l;
for(i = 0, l = p; l; l >>= 1)
if(i + l <= n && a[i + l] <= x) i += l;
if(a[i] == x) printf("%d\n", i);
else printf("-1\n");
} else if(op == 1) {
int i = -1, l;
for(i = 1, l = p; l; l >>= 1)
if(i + l <= n && a[i + l] <= x) i += l;
printf("%d\n", i);
} else {
int i = -1, l;
for(i = n, l = p; l; l >>= 1)
if(i - l >= 1 && a[i - l] >= x) i -= l;
printf("%d\n", i);
}
}
return 0;
}