wogiao
作者:
TANTN
,
2023-07-18 19:28:33
,
所有人可见
,
阅读 164
#include<bits/stdc++.h>
using namespace std;
const int N=100000;
int num[N];
int solve(int fr,int to){
if(fr>to) return 0;
int minnum=998244353,minpos=0;
for(int i=fr;i<=to;i++){
if(num[i]<minnum){
minpos=i;
minnum=num[i];
}
}
for(int i=fr;i<=to;i++){
num[i]-=minnum;
}
int ans1=minnum+solve(fr,minpos-1)+solve(minpos+1,to);
int ans2=to-fr+1;
return min(ans1,ans2);
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>num[i];
}
cout<<solve(1,n);
return 0;
}