include<bits/stdc++.h>
using namespace std;
int n;
int a[105];
int f[105];
int main(){
cin >> n;
for(int i=1;i<=n;++i){
cin >> a[i];
}
if(n==1||n==2){
cout << 0;
return 0;
}
f[1]=1;
int cnt1=0,cnt2=0,ans=0;
for(int k=2;k<=n;++k){ //枚举分界点
cnt1=0,cnt2=0;
//最长上升子序列
for(int i=2;i<=k;++i){
int z=0;
for(int j=i-1;j>0;--j){ //遍历之前的序列,找到能接在a[i]之前的最长的
if(a[j]<a[i]) z=max(z,f[j]); //z表示前面子序列小于a[i]的最长长度
}
f[i]=z+1;
cnt1=max(cnt1,f[i]);
}
f[k]=1;
//最长下降子序列
for(int j=k;j<=n;++j){
int z=0;
for(int p=j-1;p>=k;--p){
if(a[p]>a[j]) z=max(z,f[p]);
}
f[j]=z+1;
cnt2=max(cnt2,f[j]-1);
}
ans=max(ans,cnt1+cnt2);
}cout << n-ans; return 0;
}

京公网安备 11010502036488号