Pagini recente » Cod sursa (job #1593113) | Cod sursa (job #1892684) | Cod sursa (job #884850) | Cod sursa (job #2753447) | Cod sursa (job #249249)
Cod sursa(job #249249)
#include <cstdio>
#define MAXN 100005
int N, M;
int V[MAXN];
#define mj ((st + dr) >> 1)
int bin_search1 (int x) {
int st = 1, dr = N;
int poz;
while (st <= dr)
if (V[mj] <= x) {
poz = mj;
st = mj + 1;
}
else
dr = mj - 1;
return poz;
}
int bin_search2 (int x) {
int st = 1, dr = N;
int poz;
while (st <= dr)
if (V[mj] >= x) {
poz = mj;
dr = mj - 1;
}
else
st = mj + 1;
return poz;
}
int main () {
freopen ("cautbin.in", "r", stdin);
freopen ("cautbin.out", "w", stdout);
scanf ("%d", &N);
for (int i = 1; i <= N; ++ i)
scanf (" %d", V + i);
int op, x;
for (scanf(" %d", &M); M; -- M) {
scanf (" %d %d", &op, &x);
if (op < 2) {
int p = bin_search1(x);
if (op == 0 && V[p] != x) printf("-1\n");
else printf ("%d\n", p);
}
else printf ("%d\n", bin_search2(x));
}
return 0;
}