用了快读也没过,不知道为什么
#include <iostream>
using namespace std;
const int N = 1e5+1;
int n,m,lg[N],f[N][17];
inline int read() {
int x=0, f=1; char ch=getchar();
while (ch < '0' || ch > '9'){if (ch=='-') f=-1;ch=getchar();}
while (ch >= '0' && ch <= '9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
n = read(); m = read();
for (int i = 2; i <= n; i++) lg[i] = lg[i/2]+1;
for (int i = 1; i <= n; i++) f[i][0] = read();
for (int j = 1; j <= lg[n]; 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 l,r,t,i = 1; i <= m; i++) {
l = read(); r = read();
t = lg[r-l+1];
cout << max(f[l][t],f[r-(1<<t)+1][t]) << endl;
}
return 0;
}