时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
小红在一个rpg游戏准备去击杀boss。已知小红一共有

种技能,每种技能拥有一种属性(冰、火、雷中的一种),并且有一个伤害。每种技能只能释放一次。
已知一个技能对boss释放时,会有以下三种情况:
1. 如果boss目前没有任何属性,则为boss附上该技能的属性。技能的伤害不变。
2. 如果boss目前被附上的属性和技能的属性相同,那么被附上的层数加1。技能的伤害不变。
3. 如果boss目前被附上的属性和技能的属性不同,那么消耗一层boss被附上的属性,并且该技能伤害翻倍。
已知boss初始没有被附上任何属性。小红可以自由安排技能的释放顺序,她希望最终对boss的伤害最大化。请你帮小红设计一个技能释放次序。
输入描述:
第一行输入一个正整数
,代表小红拥有的技能数量。
接下来的
行,每行输入一个字符串
和一个正整数
,代表每个技能的属性和伤害。


保证是 "ice" 、 "fire" 、 "thunder"中的一种。
输出描述:
输出一个正整数,代表小红对boss能造成的最大伤害。
示例1
输入
复制
5
fire 3
thunder 2
ice 5
fire 4
thunder 3
说明
按照 2 3 5 4 1 的攻击顺序,总伤害为 2+5*2+3+4*2+3=26