ST表 9pts
查看原帖
ST表 9pts
575655
Chtholly_is_cute楼主2023/12/6 20:23

code:

#include<bits/stdc++.h>
using namespace std;
int f[111111][21];
//f[i][j]=max(a[i-->(1<<j)])
int lg[111111],n,m,l,r;
void LOG(){
    lg[1]=0,lg[2]=1;
    for(register int i=3;i<=n;++i){
        lg[i]=lg[i<<1]+1;
    }
}
int main(){
    cin>>n>>m;
    LOG();
    for(int i=1;i<=n;i++)cin>>f[i][0];
    for(int j=1;j<=21;j++){
        for(int i=1;i+(1<<j)-1<=n;i++){
            f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
        }
    }
    for(int i=1;i<=m;i++){
        cin>>l>>r;
        int LG=lg[r-l+1];
        int ans=min(f[l][LG],f[r-(1<<LG)+1][LG]);
        cout<<ans<<' ';
    }
    return 0;
}
2023/12/6 20:23
加载中...