已经试过各种方法但是好像还是TLE最后三个点
ST表做法
代码在这
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
int st[N][110];
int m,n;
int x,y;
int lg[N];
int query(int x,int y) {
int t=lg[y-x+1];
return max(st[x][t],st[y-(1<<t)+1][t]);
}
int main() {
ios::sync_with_stdio(false);
cin>>m>>n;
for(int i=1; i<=m; i++) {
int k=i,t=0;
while(k) {
k=k>>1;
t++;
}
t--;
lg[i]=t;
}
for(int i=1; i<=m; i++) {
cin>>st[i][0];
}
for(int j=1; j<=22; j++) {
for(int i=1; i<=m; i++) {
if(i+(1<<j)-1<=m) st[i][j]=max(st[i][j-1],st[i+(1<<j-1)][j-1]);
}
}
for(int i=1; i<=n; i++) {
cin>>x>>y;
cout<<query(x,y)<<'\n';
}
return 0;
}
qwq