题解 | #合唱队#

合唱队

https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

a = int(input())
b = list(map(int,input().split(" "))) 
import bisect
result2 = []
def uplist(a,len1):
    result1 = [1]*len1
    pftsub = [a[0]]
    for i in range(1,len1):
        if a[i] > pftsub[-1]:
            pftsub.append(a[i])
            result1[i] = result1[i-1]+1
        else:
            pftsub[bisect.bisect_left(pftsub,a[i])] = a[i]
            result1[i] = result1[i-1]
    return result1
list1 = uplist(b,a)
list2 = uplist(b[::-1],a)[::-1]
result2=[list1[i]+list2[i] - 1 for i in range(a) ]
print(a-max(result2))

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务