某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以一套系统有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。计算要拦截所有导弹最小需要配备多少套这种导弹拦截系统。
a = list(map(int,input().split())) #导弹的高度
b = [a[0]] #导弹拦截系统,每一个存储的是不同系统的最后导弹高度
#遍历剩余的导弹
for x in a[1:]:
k = -1 #判断是否能够拦截的标记
#遍历已有的导弹拦截系统,选择最小拦截高度
for i in range(len(b)):
#不能拦截
if b[i] < x:
continue
#能拦截
if k == -1:
k = i
else:
if b[i] - x < b[k] < x: #选取相差比较小的高度,可以不浪费可以拦截更多的导弹,使用了贪心的思想
k = i
if k == -1:
b.append(x) #没有能拦截的创建一个新的拦截系统
else:
b[k] = x #在能拦截的情况下,改变当前系统的最后拦截高度
print(len(b))