ST表MLE求助
查看原帖
ST表MLE求助
556362
qwq___qaq楼主2021/12/29 14:44
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e6+5;
int n,m,a[maxn],dp[maxn][20];
namespace ST{
	inline void init(){
		for(int i=1;i<=n;++i)
			dp[i][0]=a[i];
		for(int j=1;(1<<j)<=n;++j)
			for(int i=1;i+(1<<j)-1<=n;++i)
				dp[i][j]=max(dp[i][j-1],dp[i+(1<<j-1)][j-1]);
	}
	inline int ask(int l,int r){
		int k=log2(r-l+1);
		return max(dp[l][k],dp[r-(1<<k)+1][k]);
	}
}
using namespace ST;
signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;++i)
		scanf("%lld",&a[i]);
	init();
	int ans=-1e12;
	for(int i=1;i<n;++i)
		ans=max(ans,ask(i+1,n)-a[i]);
	printf("%lld\n",ans);
	return 0;
}
2021/12/29 14:44
加载中...