当你的 ST 表只有 80pts: 请检查在计算 lg[] 时有没有把 n 和 m 打反。
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y;
const int N=1e5+10;
int lg[N],f[N][20];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>m>>n;
lg[1]=0;
for(int i=2;i<=m;i++) lg[i]=lg[i>>1]+1;
for(int i=1;i<=m;i++) cin>>f[i][0];
for(int j=1;j<=lg[m];j++)
for(int i=1;i<=m-(1<<j)+1;i++)
f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
for(int i=1;i<=n;i++){
cin>>x>>y;
int k=lg[y-x+1];
cout<<min(f[x][k],f[y-(1<<k)+1][k])<<" ";
}
return 0;
}