st表求调!
查看原帖
st表求调!
724221
ILoveSoviet楼主2023/7/14 22:14
#include<iostream>
using namespace std;
int m,n,lg[100005],st[20][100005];
void init(){
    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>>st[0][i];
    for(int j=1;j<=lg[m];j++){
        for(int i=1;i<=m-(1<<j)+1;i++){
            st[j][i]=max(st[j-1][i],st[j-1][i+(1<<(j-1))]);
        }
    }
}
int find(int l,int r){
    int si=lg[r-l+1];
    return max(st[si][l],st[si][r-(1<<si)+1]);
}
int main(){
    init();
    while(n--){
        int x,y;
        cin>>x>>y;
        cout<<find(x,y)<<endl;
    }
}
2023/7/14 22:14
加载中...