#使用了两个dp列表来存储状态 #我很厉害,非常有长进,从一开始不会动态规划,到现在可以解决这个问题了! n=int(input()) s=[int(x) for x in input().split()] dp1=[1]*n dp2=[0]*n #从后往前,看这个人右边最多能站几个人 for i in range(n)[::-1]: for j in range(i,n)[::-1]: if s[i]>s[j] and dp1[j]+1>dp1[i]: dp1[i]=dp1[j]+1 # if s[i]>s[j]:会超时 # dp1[i]=max(dp1[j]+1,dp1[i]) #从前往后,看这个人左边最多能站几个人 for i in range(n): for j in range(i): if s[i]>s[j] and dp2[j]+1>dp2[i]: dp2[i]=dp2[j]+1 # if s[i]>s[j]:会超时 # dp2[i]=max(dp2[j]+1,dp2[i]) dp3 =list(map(lambda x: x[0] + x[1], zip(dp1, dp2))) print(n-max(dp3))