import sys
num = int(input())
heights = list(map(int, input().split()))
resmax = 0
def halpsearch(buffs,key):
    l,r=0,len(buffs)-1
    mid=l
    while(l<r):
        mid=(l+r)//2
        if(buffs[mid]>=key):
            r=mid
        else:
            l=mid+1
    return r
def solve(heights):
    dp = [1] * len(heights)
    bufsorted=[]
    bufsorted.append(heights[0])
    for i in range(1,num):
        if(heights[i]>bufsorted[-1]):
            bufsorted.append(heights[i])
            dp[i]=len(bufsorted)
        elif(heights[i]<bufsorted[0]):
            bufsorted[0]=heights[i]
        else:
            index=halpsearch(bufsorted,heights[i])
            bufsorted[index]=heights[i]
            dp[i]=index+1
    return dp
dp1=solve(heights)
dp2=solve(heights[::-1])[::-1]
for i in range(num):
    if (dp1[i] + dp2[i] - 1) > resmax:
        resmax = dp1[i] + dp2[i] - 1
print(num - resmax)

简洁版