Pagini recente » Cod sursa (job #555027) | Cod sursa (job #2834114) | Cod sursa (job #2482624) | Cod sursa (job #2682842) | Cod sursa (job #218570)
Cod sursa(job #218570)
// http://infoarena.ro/problema/cautbin
#include <cstdio>
const int NMAX = 100000;
int n;
int A[NMAX];
int binarySearch(int op, int key) {
int l, r, m, ans = -1;
l = 0, r = n - 1;
while (l <= r) {
m = (r - l) / 2 + l;
if (key < A[m]) {
r = m - 1;
if (op == 2)
ans = m;
} else {
l = m + 1;
if (op == 1)
ans = m;
}
if (key == A[m]) {
return m;
}
}
return ans;
}
int main() {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
int i;
for (i = 0; i < n; ++ i)
scanf("%d", &A[i]);
int m, op, key, ans;
scanf("%d", &m);
for (i = 0; i < m; ++ i) {
scanf("%d %d", &op, &key);
ans = binarySearch(op, key);
if (ans == -1)
printf("-1\n");
else
printf("%d\n", ans + 1);
}
return 0;
}