#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
typedef long long ll;
ll h[N],w[N];
ll ans[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>h[i]>>w[i];
}
stack<pair<int,int>>stk;
stk.push({h[1],w[1]});
for(int i=2;i<=n;i++)
{
while(!stk.empty()&&h[i]>stk.top().first)
{
ans[i]+=stk.top().second;
stk.pop();
}
stk.push({h[i],w[i]});
}
stack<pair<int,int>>stk2;
stk2.push({h[n],w[n]});
for(int i=n-1;i>=1;i--)
{
while(!stk2.empty()&&h[i]>stk2.top().first)
{
ans[i]+=stk2.top().second;
stk2.pop();
}
stk2.push({h[i],w[i]});
}
// for(int i=1;i<=n;i++)cout<<ans[i]<<' ';
// cout<<endl;
ll res = 0;
for(int i=1;i<=n;i++)res = max(res,ans[i]);
cout<<res<<endl;
return 0;
}
单调栈秒了

京公网安备 11010502036488号