#include <bits/stdc++.h>
#include <cstdio>
using namespace std;
const int Maxn=1e5+9;
int a[Maxn];
int minn=0,maxn=0;
int sum=0;
int main(){
//freopen("road.in","r",stdin);
// freopne("road.out","w",stdout);
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]==0)sum++;
maxn=max(maxn,a[i]);
}
minn=maxn+10;
int ans=0;
while(sum!=n){
int i=0;
while(i<=n){
i++;
minn=maxn+10;
int left=i;
for(i;i<=n;i++){
if(a[i]==0){
break;
}
minn=min(minn,a[i]);
}
if(minn==maxn+10)
continue;
ans+=minn;
for(left;left<i;left++){
a[left]-=minn;
if(a[left]==0){
sum++;
}
}
if(sum==n){
break;
}
}
}
cout<<ans;
// fclose(stdin);
// fclose(stdout);
return 0;
}
自估O(n∗n)