Pagini recente » Cod sursa (job #2932353) | Cod sursa (job #182167) | Cod sursa (job #1485372) | Cod sursa (job #2788079) | Cod sursa (job #1483288)
#include <stdio.h>
int v[100005], N, M;
int bsearch0 (int x) {
int l = 0, r = N+1;
while (r - l > 1) {
int mid = (l+r)/2;
if (x < v[mid]) {
r = mid;
} else {
l = mid;
}
}
return (v[l] == x) ? l : -1;
}
int bsearch1 (int x) {
int l = 0, r = N+1;
while (r - l > 1) {
int mid = (l+r)/2;
if (x < v[mid]) {
r = mid;
} else {
l = mid;
}
}
return l;
}
int bsearch2 (int x) {
int l = 0, r = N+1;
while (r - l > 1) {
int mid = (l+r)/2;
if (v[mid] < x) {
l = mid;
} else {
r = mid;
}
}
return r;
}
int main (void) {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &N);
for (int i = 1; i <= N; ++i) {
scanf("%d", &v[i]);
}
scanf("%d", &M);
for (int i = 0; i < M; ++i) {
int c, x;
scanf("%d %d", &c, &x);
switch (c) {
case 0: printf("%d\n", bsearch0(x)); break;
case 1: printf("%d\n", bsearch1(x)); break;
case 2: printf("%d\n", bsearch2(x)); break;
}
}
return 0;
}