代码:
#include <bits/stdc++.h>
using namespace std;
int f[1000005][25];
int main()
{
int n,m;
cin >> n >> m;
for(int i = 1;i <= n;i++)
{
cin >> f[i][0];
}
int lc = int(log(double(n)) / log(2.0));
for(int j = 1;j <= lc;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]);
}
}
for(int i = 1;i <= m;i++)
{
int l,r;
cin >> l >> r;
int p = int(log(double(r - l + 1)) / log(2.0));
cout << max(f[l][p],f[r - (1 << p) + 1][p]) << endl;
}
return 0;
}