一开始没看到题目就做
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; typedef long long ll; const ll maxn=50010; ll sta[maxn],h[maxn],v[maxn],sum[maxn],f1[maxn]; int main(){ int n,top=0; ll ans=0; scanf("%d",&n); for(int i=1;i<=n;++i)scanf("%lld%lld",&h[i],&v[i]); sta[0]=0; for(int i=1;i<=n;++i){ while(top&&h[sta[top]]<h[i]){ sum[i]+=v[sta[top]]; top--; } sta[++top]=i; } sta[0]=n+1;top=0; for(int i=n;i>=1;--i){ while(top&&h[sta[top]]<h[i]){ sum[i]+=v[sta[top]]; top--; } ans=max(ans,sum[i]); sta[++top]=i; } printf("%lld",ans); return 0; }
,以为是所有奶牛疯狂wa。
原来是最近的一只。