文理学院程序设计在线练习


勇者屠龙

Time Limit: 2 Second(s)    Memory Limit: 32 MB

Total Submission(s): 96   Accepted Submission(s): 29
Problem Description

作为一名勇者,总要面对最终boss - 大龙。
把最终战斗抽象成一个回合制的过程。
你的生命值是hp,当hp小于等于0时宣告牺牲。你有att点攻击力和def点防御力。
龙也有生命值和防御力。因为这次你打的龙非常简单,它只会一直向你攻击,而且你已经预知了随后n轮它会对你造成的攻击力,如果n轮后战斗仍然没有结束,勇者会被大龙的援军打倒。
攻击伤害简单计算为:攻击方的攻击力-对方的防御力。如果你的攻击力小于对方的防御力,那么就无法造成伤害。
对于每一回合,你可以选择格挡或者攻击,格挡时你该轮不受到伤害。
如果攻击,则龙会受到(你的攻击力-龙的防御力)点伤害,你也会受到(龙的攻击力-你的防御力)点伤害。
无论如何,勇者不能牺牲,问最优决策下,屠龙成功需要的最少战斗轮数及这种情况下勇者剩余的最多生命值。

Input

第一行输入一个整数T,表示数据组数(T<=1000)。
每组数据第一行输入三个整数hp,att,def,分别代表勇者的生命值、攻击力和防御力。
随后一行,输入三个整数hp1,def1,n,分别代表龙的生命值、防御力和总轮数。
随后一行,输入n个整数ai,表示第i轮龙的攻击力。其中,
1 <= n <= 10
1 <= hp,hp1 <= 10000
0 <= att,def,def1,ai <= 10000

Output

对于每组数据输出一行,如果勇者屠龙成功,则输出两个整数(以一个空格分隔),表示需要的最少战斗轮数及这种情况下勇者剩余的最多生命值;如果勇者会牺牲,则输出-1。

Sample Input
2
100 100 1
500 0 10
100 2 3 4 5 6 7 8 9 10
1 100 100
10000 10000 3
10000 10000 10000
Sample Output
6 85
-1
Hint

样例1中,勇者第一轮格挡,随后一直选择攻击,第六轮可以砍死龙并受到(2-1)+(3-1)+(4-1)+(5-1)+(6-1)=15点伤害。
样例2中,无论怎么格挡也无济于事(会超出轮数范围),故最终勇者会牺牲。

Source

2019校赛