小 D 最近在网上发现了一款小游戏。游戏的规则如下:
- 游戏的目标是按照编号
顺序杀掉 条巨龙,每条巨龙拥有一个初始的生命值 。同时每条巨龙拥有恢复能力,当其使用恢复能力时,它的生命值就会每次增加 ,直至生命值非负。只有在攻击结束后且当生命值恰好为 时它才会死去。 - 游戏开始时玩家拥有
把攻击力已知的剑,每次面对巨龙时,玩家只能选择一把剑,当杀死巨龙后这把剑就会消失,但作为奖励,玩家会获得全新的一把剑。
小 D 觉得这款游戏十分无聊,但最快通关的玩家可以获得 ION2018 的参赛资格, 于是小 D 决定写一个笨笨的机器人帮她通关这款游戏,她写的机器人遵循以下规则:
- 每次面对巨龙时,机器人会选择当前拥有的,攻击力不高于巨龙初始生命值中攻击力最大的一把剑作为武器。如果没有这样的剑,则选择攻击力最低的一把剑作为武器。
- 机器人面对每条巨龙,它都会使用上一步中选择的剑攻击巨龙固定的
次,使巨龙的生命值减少 。 - 之后,巨龙会不断使用恢复能力,每次恢复
生命值。若在使用恢复能力前或某一次恢复后其生命值为 ,则巨龙死亡,玩家通过本关。
那么显然机器人的攻击次数是决定能否最快通关这款游戏的关键。小 D 现在得知了每条巨龙的所有属性,她想考考你,你知道应该将机器人的攻击次数
当然如果无论设置成多少都无法通关游戏,输出
输入格式
从标准输入读入数据。
第一行一个整数
接下来
- 每组数据的第一行包含两个整数,
和 ,代表巨龙的数量和初始剑的数量; - 接下来一行包含
个正整数,第 个数表示第 条巨龙的初始生命值 ; - 接下来一行包含
个正整数,第 个数表示第 条巨龙的恢复能力 ; - 接下来一行包含
个正整数,第 个数表示杀死第 条巨龙后奖励的剑的攻击力; - 接下来一行包含
个正整数,表示初始拥有的 把剑的攻击力。
输出格式
输出到标准输出中。
一共
第
样例一
input
2 3 3 3 5 7 4 6 10 7 3 9 1 9 1000 3 2 3 5 6 4 8 7 1 1 1 1 1
output
59 -1
explanation
第一组数据:
- 开始时拥有的剑的攻击力为
,第 条龙生命值为 ,故选择攻击力为 的剑,攻击 次,造成 点伤害,此时龙的生命值为 ,恢复 次后生命值恰好为 ,死亡。 - 攻击力为
的剑消失,拾取一把攻击力为 的剑,此时拥有的剑的攻击力为 ,第 条龙生命值为 ,故选择攻击力为 的剑,攻击 次,造成 点伤害,此时龙的生命值为 ,恢复 次后生命值恰好为 ,死亡。 - 此时拥有的剑的攻击力为
,第 条龙生命值为 ,故选择攻击力为 的剑,攻击 次,造成 点伤害,此时龙的生命值为 ,恢复 次后生命值恰好为 ,死亡。 - 没有比
次更少的通关方法,故答案为 。
第二组数据:
- 不存在既能杀死第一条龙又能杀死第二条龙的方法,故无法通关,输出
。
样例二
见下载文件中的 ex_dragon2.in
与 ex_dragon2.ans
。
限制与约定
测试点编号 | 攻击力 | 其他限制 | ||||
---|---|---|---|---|---|---|
1 | 无 | |||||
2 | 无 | |||||
3 | 无 | |||||
4 | 无 | |||||
5 | 特性 1、特性 2 | |||||
6 | 特性 1、特性 2 | |||||
7 | 特性 1、特性 2 | |||||
8 | 特性 1 | |||||
9 | 特性 1 | |||||
10 | 特性 1 | |||||
11 | 特性 1 | |||||
12 | 特性 1 | |||||
13 | 特性 1 | |||||
14 | 无特殊限制 | |||||
15 | 无特殊限制 | |||||
16 | 所有 | 特性 1 | ||||
17 | 所有 | 特性 1 | ||||
18 | 无特殊限制 | 特性 1 | ||||
19 | 无特殊限制 | 特性 1 | ||||
20 | 无特殊限制 | 特性 1 |
特性 1 是指:对于任意的
特性 2 是指:
对于所有的测试点,
保证
提示
你所用到的中间结果可能很大,注意保存中间结果的变量类型。
时间限制:
空间限制: