移水造海
样例一
样例二
样例三
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,maxn=0;
cin>>n;
vector<int>a;
int tmp;
int ans=0;
for(int i=0;i<n;i++)
{
cin>>tmp;
maxn=max(maxn,tmp);//获取最大高度
a.push_back(tmp);
}
/*思路:从高度为1开始遍历到maxn,计算不低于每一层高度的坐标点之间的距离,则是可以加的水的桶数*/
for(int i=1;i<=maxn;i++)//从高度为1开始遍历到maxn
{
int last=-1;
for(int j=0;j<n;j++)
{
if(a[j]>=i)
{
if(last!=-1) ans+=j-last-1;
last=j;
}
}
}
cout<<ans<<endl;
return 0;
}