题解 | #合唱队#
合唱队
https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4
import bisect def inc_max(N,hli): dp=[1]*N arr=[hli[0]] for i in range(1,N): if hli[i]>arr[-1]: arr.append(hli[i]) dp[i]=len(arr) else: pos=bisect.bisect_left(arr,hli[i]) dp[i]=pos+1 arr[pos]=hli[i] return dp while True: try: N=int(input()) hli=list(map(int,input().split(' '))) left_inc_max=inc_max(N,hli) right_inc_max=inc_max(N,hli[::-1])[::-1] lr_inc_max=[] for i in range(N): lr_inc_max.append(left_inc_max[i]+right_inc_max[i]-1) print(N-max(lr_inc_max)) except: break