#P1887. Testing the CATCHER
Testing the CATCHER
描述
国防部的一家军事承包商刚刚完成了一系列针对新型防御导弹CATCHER的初步测试。该导弹能够拦截多枚来袭的进攻性导弹。CATCHER被认为是一种卓越的防御导弹,它可以向前、横向和向下高速移动,并且能够在不被损坏的情况下拦截进攻性导弹。然而,它有一个主要缺陷:尽管它可以被发射到任何初始高度,但它无法移动到比上一枚拦截的导弹更高的位置。
承包商完成的测试是战场和敌方攻击条件的计算机模拟。由于只是初步测试,这些模拟仅测试了CATCHER的垂直移动能力。在每个模拟中,CATCHER被发射以拦截一系列按固定时间间隔来袭的进攻性导弹。对于每枚来袭导弹,CATCHER可获得的唯一信息是其在可被拦截点的高度以及它在导弹序列中的位置。每次测试运行中的每枚来袭导弹在序列中仅出现一次。
每次测试的结果报告为来袭导弹的序列以及在该测试中被CATCHER拦截的导弹总数。
总审计局希望确保军事承包商提交的模拟测试结果在CATCHER的限制条件下是可达到的。你必须编写一个程序,输入表示多个不同测试的来袭导弹模式的数据,并输出CATCHER在这些测试中可能拦截的最大导弹数量。对于测试中的任何来袭导弹,CATCHER能够拦截它当且仅当它满足以下两个条件之一:
- 该来袭导弹是本次测试中第一枚被拦截的导弹。
- 该导弹在最后一枚被拦截的导弹之后发射,并且其高度不高于最后一枚被拦截的导弹。
输入
任何测试的输入数据由一个或多个非负整数序列组成,所有整数都小于或等于32,767,表示来袭导弹的高度(测试模式)。每个序列的最后一个数字是-1,表示该特定测试的数据结束,不被视为代表导弹高度。整个输入数据的结束是在一个测试中第一个值为-1;它不被视为一个单独的测试。
输出
每个测试的输出包括一个测试编号(测试#1、测试#2等)以及CATCHER在该测试中可能拦截的最大来袭导弹数量。该最大数量出现在一个标识消息之后。连续数据集的输出之间必须至少有一个空行。
注意
任何给定测试中的导弹数量没有限制。如果你的解决方案基于低效算法,可能无法在规定时间内执行。
输入数据 1
389
207
155
300
299
170
158
65
-1
23
34
21
-1
-1
输出数据 2
Test #1:
maximum possible interceptions: 6
Test #2:
maximum possible interceptions: 2