st二维开到350会爆但300又不够?
所以是写法错了
求助
#include<bits/stdc++.h>
using namespace std;
int st[100060][300];
int main(){
int n,m;
cin>>n>>m;
int tmp,l,r;
for(int i=1;i<=n;i++){
scanf("%d",&tmp);
st[i][0]=tmp;
}
int j=0;
for(int k=1;j<=n;k++){
for(int i=1;i<=n;i++){
j=pow(2,k-1);
st[i][k]=max(st[i][k-1],st[i+j][k-1]);
}
}
int s;
for(int i=1;i<=m;i++){
scanf("%d %d",&l,&r);
s=log2(r-l+1);
r=r-pow(2,s)+1;
cout<<max(st[l][s],st[r][s])<<'\n';
}
return 0;
}