#include #include using namespace std; inline int maxs(int yi, int er) { return yi > er ? yi : er; } int main() { int n, m, a[100001] = { 0 }; scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } int num[100001] = { 0 }, id[100001] = { 0 }; int tou = 0, wei = 0; scanf("%d", &m); for (int i = 1; i <= m; i++) { int x, y; scanf("%d%d", &x, &y); if (id[wei] > x) { while (tou < wei && id[tou] < x) { tou++; } for (int j = id[wei] + 1; j <= y; j++) { while (tou <= wei && num[wei] < a[j]) { wei--; } wei++; num[wei] = a[j]; id[wei] = j; } } else { tou=wei=x; tou++; for (int j = x; j <= y; j++) { while (tou <= wei && num[wei] < a[j]) { wei--; } wei++; num[wei] = a[j]; id[wei] = j; } } printf("%d\n", id[tou]); } }