10pts 求助
查看原帖
10pts 求助
1126325
Indestructible楼主2024/7/9 12:26
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1000006;
int n,ans,point1,point2;
int a[maxn],energy[maxn],f[maxn];
pair<int,int> stk1[maxn],stk2[maxn];
signed main(){
	scanf("%lld",&n);
	for (int i=1;i<=n;i++){
		scanf("%lld%lld",&a[i],&energy[i]);
		while (point1 && stk1[point1].first<a[i]){
			f[i]+=energy[stk1[point1--].second];
		}
		stk1[++point1].first=a[i],stk1[point1].second=i;
	}
	for (int i=n;i>=1;i--){
		while (point2 && stk1[point2].first<a[i]){
			f[i]+=energy[stk1[point2--].second];
		}
		stk2[++point2].first=a[i],stk2[point2].second=i;
		ans=max(ans,f[i]);
	}
	printf("%lld",ans);
	return 0;
}
2024/7/9 12:26
加载中...