单调栈。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,top,s[1000005],x;
long long ans=0;
int main()
{
scanf("%d",&n);
s[0]=2000000000;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
while(top>0&&x>=s[top])
{
if(x>=s[top-1])
{
ans+=s[--top];
}
else
{
ans+=x;top--;
}
}
s[++top]=x;
}
while(top>1)
ans+=s[--top];
cout<<ans;
}