问题 6383 --战士(warrior.cpp)

6383: 战士(warrior.cpp)

题目描述

小X在玩一款操控战士和怪物战斗的游戏。战士初始生命值为iH、初始攻击力为iA。怪物只有一个,初始生命值为H。 战斗是回合制的,且有一个回合数限制M。如果在M回合内怪物还没有被杀死,小X 就失败了。在每个回合,战士先行动,怪物再行动。 每当战士行动,小X可以命令战士做以下两件事中的一件: - 攻击,让怪物的生命值减少当前战士攻击力的数值。 - 磨刀,让战士攻击力增加dA。 每当怪物行动,怪物会攻击战士,使战士的生命值减少Ci,其中i为回合数。 当一个角色生命值小于等于0时,角色会死亡。 - 如果怪物死亡,那么战斗就结束了。 - 如果战士死亡,会立刻复活,将生命值和攻击力恢复为初始数值。 现在小X想问问你,最少能在几个回合内杀死怪物。

输入

第一行,5个整数,分别为iH,iA,H,dA,M,意义见问题描述。 第二行M个整数,表示第i个回合怪物的攻击力Ci。

输出

输出一行一个整数表示最少能在几个回合内杀死怪物。 如果M回合内杀不死,输出-1。

样例输入输出

输入#1 复制
4 1 6 1 8
2 1 1 1 1 1 1 1
输出#1 复制
5

提示

【样例解释】 其中一种合法方案: - 第一回合:战士磨刀,战士攻击力变为2;怪物攻击,战士生命值变成2。 - 第二回合:战士攻击,怪物生命值变为4;怪物攻击,战士生命值变成1。 - 第三回合:战士攻击,怪物生命值变为2;怪物攻击,战士死亡后复活,生命值变为4,攻击力变为1。 - 第四回合:战士攻击,怪物生命值变为1;怪物攻击,战士生命值变成3。 - 第五回合:战士攻击,怪物死亡。 【数据规模】 - 对于全部测试点:1<=iH,iA,H<=10^9,0<=dA<=10^9,1<=M<=2*10^5 - 对于测试点1:dA=0,M<=2*10^5 - 对于测试点2-3:M<=20 - 对于测试点4-5:M<=30 - 对于测试点6-8:M<=10^3 - 对于测试点9-10:M<=2*10^5
序号 标题 作者 发表时间 费用 订购数 操作