12分求助
查看原帖
12分求助
912248
FuckYouJinhai楼主2023/4/13 20:54
#include<cstdio>
#include<cmath>
#define max(x,y) ((x)>(y)?(x):(y))
int f[1000005][25];
int n,m;
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i)
        scanf("%d",&f[i][0]);
    for(int i=1;i<=log2(n);++i)
        for(int j=1;j+(1<<i)-1<=n;++j)
            f[j][i]=max(f[j][i-1],f[j+(i<<(i-1))][i-1]);
    while(m--){
        int l,r;
        scanf("%d%d",&l,&r);
        int k=log2(r-l+1);
        printf("%d\n",max(f[l][k],f[r-(1<<k)+1][k]));
    }
    return 0;
}
2023/4/13 20:54
加载中...