Pagini recente » Cod sursa (job #3273246) | Cod sursa (job #522790) | Cod sursa (job #486647) | Cod sursa (job #1814538) | Cod sursa (job #206773)
Cod sursa(job #206773)
#include <stdio.h>
const int N_MAX = 100010;
int N, v[N_MAX];
int bs(int val)
{
int i, step;
for (step = 1; step < N; step <<= 1);
for (i = 0; step; step >>= 1) {
if (i + step <= N && v[i + step] <= val) i += step;
}
return i;
}
int main()
{
freopen("cautbin.in", "r", stdin);
#ifndef _SCREEN_
freopen("cautbin.out", "w", stdout);
#endif
int M, t, val;
scanf("%d\n", &N);
for (int i = 1; i <= N; i ++) {
scanf("%d ", &v[i]);
}
scanf("%d\n", &M);
for (int i = 1; i <= M; i ++) {
scanf("%d %d\n", &t, &val);
if (t == 0) {
int poz = bs(val);
if (v[poz] != val) printf("-1\n");
else printf("%d\n", poz);
}
if (t == 1) {
int poz = bs(val);
printf("%d\n", poz);
}
if (t == 2) {
int poz = bs(val);
if (v[poz] == val) printf("%d\n", poz);
else printf("%d\n", poz + 1);
}
}
return 0;
}