Pagini recente » Cod sursa (job #2620831) | Cod sursa (job #144531) | Cod sursa (job #1579656) | Cod sursa (job #2109031) | Cod sursa (job #1475499)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 100505;
int n, m, A[NMAX];
void read() {
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &A[i]);
}
void solve() {
int type, x;
auto comp = [&] (const int& x, const int& y) -> bool {
return x < y;
};
scanf("%d", &m);
for (int i = 1; i <= m; i++) {
scanf("%d%d", &type, &x);
auto itL = lower_bound(A + 1, A + n + 1, x, comp) - A;
auto itH = upper_bound(A + 1, A + n + 1, x, comp) - A;
switch (type) {
case 0: {
itH--;
printf("%d\n", (itH == 0 || A[itH] != x) ? -1 : (int)itH);
break ;
}
case 1: {
printf("%d\n", (int)--itH);
break ;
}
case 2: {
printf("%d\n", (int)itL);
break ;
}
}
}
}
int main() {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
read();
solve();
return 0;
}