Pagini recente » Cod sursa (job #697145) | Cod sursa (job #1873305) | Cod sursa (job #218749) | Cod sursa (job #1947818) | Cod sursa (job #206775)
Cod sursa(job #206775)
#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 - 1);
printf("%d\n", poz + 1);
}
}
return 0;
}