BZOJ1345 [Baltic2007]序列问题Sequence

题面在这里

水*2……

示例程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<cstdio>
typedef long long ll;

const int maxn=1000005;
int n,stk[maxn];
int main(){
scanf("%d",&n);
int til=0; ll ans=0;
for (int i=1;i<=n;i++){
int x; scanf("%d",&x);
while (til>=2&&stk[til-1]<x) ans+=stk[til-1],til--;
if (til&&stk[til]<x) ans+=x,til--;
stk[++til]=x;
}
while (til>=2) ans+=stk[til-1],til--;
printf("%lld",ans);
return 0;
}