# KY73 合唱队形
# 算法思路:求解最长递增子序列长度
def chorus(N):
Heights = tuple(map(int, input().strip().split()))
FlagsAscend = [1 for i in range(N)] # 以i结尾的最大递增子序列的长度
for right in range(1, N): # 1 ~ N-1
for left in range(right): # 0 ~ right-1
if Heights[right] > Heights[left]:
FlagsAscend[right] = max([FlagsAscend[right], 1 + FlagsAscend[left]])
FlagsDescend = [1 for i in range(N)] # 以i开头的最大递减子序列的长度
for left in range(N-2,-1,-1):
for right in range(N-1,left,-1):
if Heights[left] > Heights[right]:
FlagsDescend[left] = max([FlagsDescend[left],FlagsDescend[right]+1])
popMinNums = float('inf')
for i in range(N):
popNum = N + 1 - FlagsDescend[i] - FlagsAscend[i]
if popNum < popMinNums:
popMinNums = popNum
print(popMinNums)
if __name__ == '__main__':
try:
while True:
N = int(input().strip())
chorus(N)
except EOFError:
pass
KY73 合唱队形
最新推荐文章于 2024-09-15 22:31:42 发布