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)
简洁版

京公网安备 11010502036488号