不知道为什么一个上升一个下降就不行,倒序上升就可以,,,
#include<bits/stdc++.h>
using namespace std;
#define mn 105
#define go(i,j,n,k) for(int i=j;i<=n;i+=k)
#define fgo(i,j,n,k) for(int i=j;i>=n;i-=k)
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='0')f=-f;ch=getchar();}
while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int n;
int a[mn],f[mn],g[mn],ans=0;
int main(){
n=read();
go(i,1,n,1){
a[i]=read();
}
a[0]=0,a[n+1]=0;
go(i,1,n,1){
go(j,0,i-1,1){
if(a[i]>a[j]){
f[i]=max(f[i],f[j]+1);
}
}
}
/*
go(i,1,n,1){
go(j,i+1,n+1,1){
if(a[i]<a[j]){
g[i]=max(g[i],g[j]+1);
}
}//这里是直接下降
}*/
fgo(i,n,0,1){
fgo(j,n+1,i+1,1){
if(a[i]>a[j]){
g[i]=max(g[i],g[j]+1);
}
}
}//倒序上升
go(i,1,n,1){
ans=max(f[i]+g[i]-1,ans);
}
cout<<n-ans;
return 0;
}