1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<string>
5 #include<algorithm>
6 using namespace std;
7 const int MAX=1005;
8 double a[MAX];
9 int up[MAX],down[MAX];
10
11 int main()
12 {
13 int n,i,j,k;
14 scanf("%d",&n);
15 for(i=1;i<=n;i++)
16 scanf("%lf",&a[i]);
17
18 memset(up,0,sizeof(up));
19 memset(down,0,sizeof(down));
20
21 up[1]=1;
22 for(i=2;i<=n;i++)
23 {
24 up[i]=1;
25 for(j=i-1;j>=1;j--)
26 {
27 if(a[i]>a[j] &&up[i]<up[j]+1)
28 up[i]=up[j]+1;
29 }
30 }
31
32 down[n]=1; //注意将down[n]初始化为1
33 for(i=n-1;i>=1;i--)
34 {
35 down[i]=1;
36 for(j=i+1;j<=n;j++)
37 {
38 if(a[i]>a[j] && down[i]<down[j]+1)
39 down[i]=down[j]+1;
40 }
41 }
42
43 k=up[n]; //k=up[n]而不是up[1];
44 for(i=1;i<n;i++)
45 {
46 for(j=i+1;j<=n;j++)
47 {
48 if(k<up[i]+down[j])
49 k=up[i]+down[j];
50 }
51 }
52 //cout<<k<<endl;
53 cout<<n-k<<endl;
54 return 0;
55
56 }