#2861. Ciel 与决斗

Ciel 与决斗

题目描述

狐狸 Ciel 正在和她的朋友 Jiro 玩卡牌游戏。

Jiro 有 nn 张牌,每张牌有两个属性:位置(攻击或防御)和力量。狐狸 Ciel 也有 mm 张牌,同样有这两个属性。已知 Ciel 的所有牌都是攻击位。

现在轮到 Ciel 的战斗阶段,她可以多次执行以下操作:

  1. 选一张自己的牌 XX。这张牌之前不能被选过。
  2. 若此刻 Jiro 没有存活的牌,Jiro 受到等于(XX 的力量)的伤害。否则,Ciel 需要选一张 Jiro 的存活牌 YY:
    • 若 YY 是攻击位,必须满足(XX 的力量)≥\ge(YY 的力量)。此攻击之后牌 YY 死亡,Jiro 受到(XX 的力量)−-(YY 的力量)的伤害。
    • 若 YY 是防御位,必须满足(XX 的力量)>\gt(YY 的力量)。此攻击之后牌 YY 死亡,但 Jiro 不受到伤害。

Ciel 可以在任意时刻结束战斗阶段(即她可以不用完全部的牌)。请帮狐狸计算 Jiro 可能受到的最大总伤害。

输入格式

第一行包含两个整数 nn 和 mm(1≤n,m≤1001 \le n, m \le 100),分别表示 Jiro 和 Ciel 拥有的牌数。

接下来 nn 行每行是一个字符串和一个整数力量(0≤力量≤80000 \le \text{力量} \le 8000),即 Jiro 当前这张牌的位置和力量。位置为 "ATK" 表示攻击位,"DEF" 表示防御位。

接下来 mm 行每行一个整数力量(0≤力量≤80000 \le \text{力量} \le 8000),即 Ciel 当前这张牌的力量。

输出格式

输出一个整数:Jiro 可能受到的最大伤害。

2 3
ATK 2000
DEF 1700
2500
2500
2500
3000
3 4
ATK 10
ATK 100
ATK 1000
1
11
101
1001
992
2 4
DEF 0
ATK 0
0
0
1
1
1

说明/提示

第一组样例中,Ciel 有 3 张力量相同的牌。最优策略是:先用其中一张攻击 "ATK 2000",牌毁掉后 Jiro 受到 2500−2000=5002500-2000=500 点伤害;再用第二张毁掉 "DEF 1700",此时 Jiro 不受伤害;现在 Jiro 没有存活牌了,她用第三张直接攻击,Jiro 受到 2500 点伤害。合计 500+2500=3000500+2500=3000。

第二组样例中,她应该用力量 1001 的牌攻击 "ATK 100",再用力量 101 的牌攻击 "ATK 10"。此时 Ciel 还有牌,但她可以选择结束战斗阶段。总伤害为 (1001−100)+(101−10)=992(1001-100)+(101-10)=992。

第三组样例注意:力量为 0 的牌可以毁掉 "ATK 0",但不能毁掉 "DEF 0"。