#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
using namespace std;
typedef pair<int, int> PII;
typedef pair<int, PII> PIII;
typedef long long ll;
const int N = 200010, M = 18;
int n, m;
int a[N];
int f[N][M];
void init()
{
for(int i = 1; i <= n; i ++)f[i][0] = a[i];
for(int j = 1; j < M; j ++)
{
for(int i = 1; i + (1 << j) - 1 <= n; i ++)
{
f[i][j] = max(f[i][j - 1], f[i + (1 << j - 1)][j - 1]);
}
}
}
int query(int l, int r)
{
int k = log2(r - l + 1);
int res = max(f[l][k], f[r - (1 << k) + 1][k]);
return res;
}
int main()
{
IOS
cin >> n;
for(int i = 1; i <= n; i ++)cin >> a[i];
init();
cin >> m;
while(m --)
{
int l, r;
cin >> l >> r;
cout << query(l, r) << endl;
}
return 0;
}
模板 - st表
最新推荐文章于 2024-09-01 16:42:17 发布