当前你的浏览器版本过低,网站已在兼容模式下运行,兼容模式仅提供最小功能支持,网站样式可能显示不正常。
请尽快升级浏览器以体验网站在线编辑、在线运行等功能。

建议使用的浏览器:

谷歌Chrome 火狐Firefox Opera浏览器 微软Edge浏览器 QQ浏览器 360浏览器 傲游浏览器

2542:补兵

题目描述
在非常流行的DOTA游戏中,补兵是非常重要的一种技术统计。如果一个单位被对方的多个单位攻击至死,则对该单位造成最后一次(致命的)伤害的攻击者将会获得更多的奖励(金钱和经验),这名攻击者被记录一次补兵。
现在假设有多个人攻击对方的一个单位,而你是其中的一个,你并不想在前面出手攻击,而只想打一次就直接将对方打死,完成一次补兵。假设其他人每次攻击的伤害和每两次攻击之间的间隔都是固定的,而你的攻击伤害也是固定的。输入将给出每个人两次攻击之间的间隔时间,并假设每个人第一次攻击的时刻值就是他的两次攻击之间的时间间隔值。例如,一个人攻击间隔为2,则他会在时刻2、4、6、8……进行攻击。
时间以整数计算。
如果多个人同时攻击导致对方死亡,攻击伤害最大的那个被记录一次补兵。如果你是攻击伤害最大的之一(还有其他和你攻击伤害一样的,但没有更大的),则你被记录一次补兵。
一个单位血量小于等于0就被判为死亡。
你的任务是求出合适的攻击时间段,使得这次补兵能够完成。这个时间段一定是一个区间,你需要输出的是它的两个端点。

输入解释
输入包含多组数据。每组数据第一行是一个整数N(2<=N<=1000),表示攻击对方某个单位的人数。N=0表示输入结束。接下来有N-1行,每行两个整数,分别表示每个人每次攻击的伤害A(1<=A<=10),以及每两次攻击之间的间隔T(1<=T<=100)。最后有一行包含两个整数,分别表示你的攻击伤害P(1<=P<=100000)以及对方单位的血量H(P<H<=1000000)。
输出解释
对每组数据,输出一行,如果不能完成补兵,输出’Impossible’,否则输出最早可以完成补兵的时间和最晚可以完成补兵的时间,用空格间隔。
输入样例
2
2 2
3
10
2
20 2
3
10
0
输出样例
8 10
Impossible

提示:
输入数据较多,尽量用scanf和printf代替cin和cout
来自杭电HDUOJ的附加信息
Recommend lcy

该题目是Virtual Judge题目,来自 杭电HDUOJ

源链接: HDU-2542

最后修改于 2020-10-25T22:54:28+00:00 由爬虫自动更新

共提交 0

通过率 --%
时间上限 内存上限
5000/1000MS(Java/Others) 32768/32768K(Java/Others)