Pagini recente » Cod sursa (job #1717357) | Cod sursa (job #2593055) | Cod sursa (job #632581) | Cod sursa (job #2312962) | Cod sursa (job #1850284)
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int a[N];
int main() {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", a + i);
}
int m;
scanf("%d", &m);
for (int ii = 0; ii < m; ii++) {
int q, x;
scanf("%d %d", &q, &x);
int det, ix;
for (det = 1; det <= n; det <<= 1);
if (q < 2) {
for (ix = 0; det; det >>= 1) {
if (ix + det <= n && a[ix + det] <= x) {
ix += det;
}
}
if (q == 0 && a[ix] != x) {
printf("%d\n", -1);
} else {
printf("%d\n", ix);
}
continue;
}
for (det = 1; det <= n; det <<= 1);
for (ix = n; det; det >>= 1) {
if (ix - det > 0 && a[ix - det] >= x) {
ix -= det;
}
}
printf("%d\n", ix);
}
return 0;
}