#1082. [202312月赛] 只剩一丝血

[202312月赛] 只剩一丝血

背景

小方小块小鸟来到了方块鸟大陆。方块鸟大陆上有许许多多有意思的地区和地下城、迷宫等待冒险者们挑战。通过击败BOSS还能拿到珍贵的战利品。 我们需要通过编程尽可能的为小方小块小鸟提供帮助。

描述

在顺利的完成方块鸟大陆的首次探险之后,小方小块小鸟带着丰富的战利品回到了冒险家工会,他们非常高兴。关于方块鸟大陆的地下城探险,你已经通过这个题目202312月赛 - 冒险旅程搞清楚了吧。如果没有搞清楚的话,请一定要搞懂才做这个题哦。

冒险家工会的导师帮他们将战利品整理好,留下有用的装备和素材,把没有用处的拿到兑换处卖掉,换成金币存下来;工会的铁匠帮他们的修理了装备;牧师帮她们恢复了全部血量,他们又可以进行下一次探险啦。

他们在计划着下一次探险的时候,小方想起了工会的牧师在帮他们治疗的时候跟他们说的话。工会牧师对他说,好危险呀,你的血量只剩下1点了,你差点就没抗住怪物的最后一次攻击呢;但是跟小块说的是,你还很健康嘛,剩余的血量有这么多,这个地下城对你来说是不是太简单了啊。

小方突然想到,如果已经知道某个冒险者的攻击力attackattack和防御力defensedefense,以及下一个地下城探险过程中将会发生的事件和信息,至少需要多少的血量才能探险成功呢?

现在需要你编写程序帮助小方找到这个最小的血量。

输入输出格式

输入

第一行为两个非负整数attackattack, defensedefense,表示冒险者初始状态下的攻击力和防御力,以空格分割。

第二行为一个正整数nn,表示冒险中遇到的事件数量。 (0<n10,0000 < n ≤ 10,000)

随后n2n * 2行,每两行表示一个事件的信息,其中: 第一行为一个字符串 event_typeevent\_type,表示事件类型,为 "BATTLE"、 "TREASURE"、"CAMPFIRE"之一; 第二行为事件相关信息:

  • 如果是BATTLE事件,则为怪物的血量monster_hpmonster\_hp、攻击力monster_attackmonster\_attack和防御力monster_defensemonster\_defense; (0<monster_hp,monster_attack,monster_defense10,0000 < monster\_hp, monster\_attack, monster\_defense ≤ 10,000)
  • 如果是TREASURE事件,则为宝物类型item_typeitem\_type和对应属性增加的数值pointpoint; ( item_typeitem\_type的值为 "POTION"、"WEAPON"、"ARMOR"之一 ; 0<point10,0000 < point ≤ 10,000)
  • 如果是CAMPFIRE事件,则为1。

输出

一个整数,为冒险者完成该次地下城探险的最小血量。保证答案min_hpmin\_hp满足 1min_hp1,000,000,0001 ≤ min\_hp ≤ 1,000,000,000 )

样例

20 5
4
TREASURE
ARMOR 5
BATTLE
30 20 10
CAMPFIRE
1
BATTLE
100 15 10
46

样例一说明: 当冒险者以初始血量上限46开始探险的话: 第一场战斗后,冒险者的血量变为26。 随后遇到篝火,恢复至46。 紧接着遇到第二场战斗,冒险者战斗胜利后,剩余血量为1。 冒险者完成探险。

当冒险者以初始血量上限45开始探险的话: 第一场战斗后,冒险者的血量变为25。 随后遇到篝火,恢复至45。 紧接着遇到第二场战斗,冒险者在第九个回合被怪物攻击至血量为0,探险失败。 冒险者未能完成探险。

说明46是冒险者完成该探险的最小初始血量上限,少1点都不可以了。