标签:style 一个 stream open can namespace scanf view max
单调栈 正着插一遍反着插一遍 记录每个点左边右边第一个比他高的。。。
yyc太强辣
#include<iostream> #include<cstdlib> #include<algorithm> #include<cstdio> #include<cmath> #include<cstring> #define ll long long using namespace std; const int maxn=1000000+50; int st[maxn],top; int n,a[maxn],v[maxn]; int ans[maxn]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d%d",&a[i],&v[i]); for(int i=1;i<=n;i++) { while(top>0 && a[st[top]]<=a[i])top--; ans[st[top]]+=v[i]; st[++top]=i; } top=0; int Ans=-1; for(int i=n;i>=1;i--) { while(top>0 && a[st[top]]<=a[i])top--; ans[st[top]]+=v[i]; st[++top]=i; } for(int i=n;i>=1;i--)Ans=max(Ans,ans[i]); cout<<Ans; }
标签:style 一个 stream open can namespace scanf view max
原文地址:http://www.cnblogs.com/Kong-Ruo/p/7718539.html