【问题描述】
李华和韩梅梅是邻居,两人都是计算机高手。他俩一直都想知道,两人到底谁的技术更高。今天,两人通过网络攻防战来一决高下。
韩梅梅写了n段代码,包含攻击代码和防御代码。李华写了m段代码,全部是攻击代码。每一段攻击代码有一个攻击力,每一段防御代码有一个防御力。每一段代码使用过一次后,就会消失。
每一轮,李华会选一段自己的代码(假设攻击力是x),去攻击韩梅梅,会出现以下四种情况:
1、韩梅梅没有代码了,则韩梅梅会受到x点伤害。
2、韩梅梅还有攻击力不大于x的攻击代码,李华从中选一段(假设攻击力是y)来对攻,韩梅梅受到x-y点伤害。
3、韩梅梅还有防御力小于x的防御代码,李华从中选一段来攻击,韩梅梅不受伤害。
4、李华可以随时结束战斗(两人的代码都不一定用完)。
现在李华想要知道,他最多能给韩梅梅制造多少点伤害。
【输入格式】
第一行包含两个整数n和m。
接下来n行,每行包含一个字符和一个整数,空格隔开,表示韩梅梅的n段代码的情况。字符可以是A或D,如果字符是A,表示这是韩梅梅的攻击代码,整数表示攻击力;如果字符是D,表示这是韩梅梅的防御代码,整数表示防御力。
接下来m行,每行包含一个整数,表示李华m段攻击代码的攻击力。
【输出格式】
一个整数,表示李华能给韩梅梅制造的最大伤害值。
【样例输入1】
2 3
A 2000
D 1700
2500
2500
2500
【样例输出1】
3000
【样例解释1】
第一轮,李华选择自己第1段代码,攻击韩梅梅的第2段代码,韩梅梅不受伤害。
第二轮,李华选择自己第2段代码,攻击韩梅梅第1段代码,韩梅梅受到500点伤害。
第三轮,李华剩下第3段代码,韩梅梅没有代码了,韩梅梅受到2500点伤害。
【样例输入2】
3 4
A 10
A 100
A 1000
1
11
101
1001
【样例输出2】
992
【样例解释2】
第一轮,李华选择自己第3段代码,攻击韩梅梅的第1段代码,韩梅梅受到91点伤害。
第二轮,李华选择自己第4段代码,攻击韩梅梅第2段代码,韩梅梅受到901点伤害。
此时,李华选择结束游戏,韩梅梅共受到992点伤害。
(李华也可以1001对10,101对100,也是991+1=992点伤害)。
【数据范围】
对于30%的数据,1≤n,m≤6。
对于60%的数据,1≤n,m≤10^3。
对于100%的数据,1≤n,m≤10^5,力量值均为不超过10^6的非负整数。
各规模均有一半数据满足韩梅梅只有攻击代码。