我的大致思路就是模拟从下往上一层一层累加积水面积,这段代码样例也没过。
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int n,h[N],ans;
void Delete()
{
int cnt=0;
for(int i=1;i<=n;i++) if(h[i]!=0) cnt++;
if(cnt>=2)
{
int l=0,r=0;
bool flag=false;
for(int i=1;i<=n;i=flag?r:i+1)
{
l=r=0;
flag=false;
if(h[i]!=0)
{
if(!l) l=i;
else if(!r) r=i;
}
if(l && r)
{
flag=true;
if(r-l>1)
for(int j=l+1;j<=r-1;j++) ans++;
else continue;
}
}
for(int i=1;i<=n;i++) if(h[i]!=0) h[i]--;
Delete();
}
else
{
cout<<ans<<endl;
exit(0);
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>h[i];
Delete();
}