为啥会全部RE
查看原帖
为啥会全部RE
575655
Chtholly_is_cute楼主2024/7/1 15:12

code:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+15;
int a[N][30],P[64],n,m;
inline int read()
{
	register int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int init(){
    P[1]=0,P[2]=1;
    for(register int i=3;i<=60;i++){
        P[i]=P[i>>1]+1;
    }
}
int Calculate_ST_List(){
    for(register int j=1;j<=30;j++){
        for(register int i=1;i+(1<<j)-1<=n;++i){
            a[i][j]=max(a[i][j-1],a[i+(1<<(j-1))][j-1]);
        }
    }
    return log2(n);
}
int getmax(int l,int r){
    int logval=P[r-l+1];
    return max(a[l][logval],a[r-(1<<logval)+1][logval]);
}
int main(){
    init();
    n=read();m=read();
    for(register int i=1;i<=n;i++){
        a[i][0]=read();
    }
    Calculate_ST_List();
    for(register int i=1;i<=m;i++){
        int l=read(),r=read();
        printf("%d\n",getmax(l,r));
    }
}
2024/7/1 15:12
加载中...