刚码的,就是左扫一遍右扫一遍那个思路。
```cpp
#include<bits/stdc++.h>
using namespace std;
int h1,h2,n,a[100001],ans,wt[100001];
int main(){
cin>>n;
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
for(int i=1;i<=n;++i){//左扫
if(a[i]>h1) h1=a[i];//更新最高点
else{
wt[i]=h1;//wt记录左扫完每一列的水量
ans+=h1-a[i];
}
}
for(int i=n;i>=1;--i){//右扫,从n到1
if(a[i]>h2) h2=a[i];//更新右扫的最高点
if(wt[i]>h2) ans-=wt[i]-h2;//这里不是else,直接减
}
printf("%d",ans);
return 0;
}
```
by SamHJD @ 2022-09-23 20:25:36
看着没啥问题,我下载了样例,你看看。
输入
```
800
0 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 0 4 9 7 4 2 5 8 6 4 5 8 6 1 3 4 5 6 8 7 7 4 5 7 5 7 5 4 3 8 6 3 3 3 4 6 7 2 5 8 7 5 9 3 4 5 6 7 8 7 6 5 3 2 3 4 7 6 4 8 6 5 6 5 2 4 7 8 9 6 7 8 2 3 7 8 5 6 7 8 5 3 4 9 7 6 4 5 6 8 7 5 3 5 9 8 6 7 8 7 8 7 7 8 9 2 3 4 5 7 8 6 5 4 5 7 6 7 8 9 0 0 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 0 4 9 7 4 2 5 8 6 4 5 8 6 1 3 4 5 6 8 7 7 4 5 7 5 7 5 4 3 8 6 3 3 3 4 6 7 2 5 8 7 5 9 3 4 5 6 7 8 7 6 5 3 2 3 4 7 6 4 8 6 5 6 5 2 4 7 8 9 6 7 8 2 3 7 8 5 6 7 8 5 3 4 9 7 6 4 5 6 8 7 5 3 5 9 8 6 7 8 7 8 7 7 8 9 2 3 4 5 7 8 6 5 4 5 7 6 7 8 9 0 4 9 7 4 2 5 8 6 4 5 8 6 1 3 4 5 6 8 7 7 4 5 7 5 7 5 4 3 8 6 3 3 3 4 6 7 2 5 8 7 5 9 3 4 5 6 7 8 7 6 5 3 2 3 4 7 6 4 8 6 5 6 5 2 4 7 8 9 6 7 8 2 3 7 8 5 6 7 8 5 3 4 9 7 6 4 5 6 8 7 5 3 5 9 8 6 7 8 7 8 7 7 8 9 2 3 4 5 7 8 6 5 4 5 7 6 7 8 9 0 0 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 0 4 9 7 4 2 5 8 6 4 5 8 6 1 3 4 5 6 8 7 7 4 5 7 5 7 5 4 3 8 6 3 3 3 4 6 7 2 5 8 7 5 9 3 4 5 6 7 8 7 6 5 3 2 3 4 7 6 4 8 6 5 6 5 2 4 7 8 9 6 7 8 2 3 7 8 5 6 7 8 5 3 4 9 7 6 4 5 6 8 7 5 3 5 9 8 6 7 8 7 8 7 7 8 9 2 3 4 5 7 8 6 5 4 5 7 6 7 8 9 0 0 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 0 4 9 7 4 2 5 8 6 4 5 8 6 1 3 4 5 6 8 7 7 4 5 7 5 7 5 4 3 8 6 3 3 3 4 6 7 2 5 8 7 5 9 3 4 5 6 7 8 7 6 5 3 2 3 4 7 6 4 8 6 5 6 5 2 4 7 8 9 6 7 8 2 3 7 8 5 6 7 8 5 3 4 9 7 6 4 5 6 8 7 5 3 5 9 8 6 7 8 7 8 7 7 8 9 2 3 4 5 7 8 6 5 4 5 7 6 7 8 9 0 4 9 7 4 2 5 8 6 4 5 8 6 1 3 4 5 6 8 7 7 4 5 7 5 7 5 4 3 8 6 3 3 3 4 6 7 2 5 8 7 5 9 3 4 5 6 7 8 7 6 5 3 2 3 4 7 6 4 8 6 5 6 5 2 4 7 8 9 6 7 8 2 3 7 8 5 6 7 8 5 3 4 9 7 6 4 5 6 8 7 5 3 5 9 8 6 7 8 7 8 7 7 8 9 2 3 4 5 7 8 6 5 4 5 7 6 7 8 9 0
```
输出
```
2861
```
而你输出的是
```
2859
```
by Steve_JTH @ 2022-09-24 08:27:37