OpenJudge

1126T2:星际争霸

总时间限制:
20000ms
单个测试点时间限制:
2000ms
内存限制:
65535kB
描述

sophie正在参加一场星际争霸(starcraft)比赛,她正在使用人族(terran),在某一时刻,她的部队由2种兵种组成:Marine(机枪兵)Medic(医疗兵)。接下来她的部队将受到一系列攻击,每次攻击之后,医疗兵可以对现存部队中血量最少的单位进行治疗,一次治疗可以加血xx当前存活的医疗兵数量;当一个MedicMarine同时血量最少时,优先治疗Marine;当相同兵种的2个单位同时血量最少时,优先治疗标号小的单位。

sophie想要知道的是:每次治疗之后,现存部队中血量最少的单位是哪个。


输入
第一行包含两个正整数 Nm 和 Nd,空格隔开,分别代表初始时sophie部队中Marine和Medic的数量。
接下来一行包含Nm个正整数,代表第1号...第Nm号Marine的初始血量。
接下来一行包含Nd个正整数,代表第1号...第Nd号Medic的初始血量。
第四行包含1个正整数 T,代表被攻击的次数。
接下来T行,每行包含一个攻击命令,格式为“c i damage”,其中字符c = 'M'/'D'代表被攻击的是Marine或者Medic,正整数i代表被攻击的单位标号,正整数damage代表攻击所造成的伤害。
请注意,若某个单位血量耗尽则立即死亡,死亡单位不会受到攻击或者治疗。另外需要注意的是,Marine和Medic的血量上限分别为40/60,被治疗时血量不会超过上限。
输出
输出 T 行,每行包含一个字符和一个整数,代表第i次攻击后,sophie的现存部队中血量最少单位的兵种('M'/'D'/'MD')和血量,若此时sophie已经没有部队,输出“All Dead”,若血量最少的单位中同时有 Marine 和 Medic,兵种为'MD'。
样例输入
2 1
40 40
60
3
D 1 21
M 1 39
M 1 2
样例输出
MD 40
M 2
MD 40
提示
【样例 1 说明】
初始:Mar[1]=40, Mar[2]=40, Med[1]=60;
T=1, D 1 21:
Mar[1]=40, Mar[2]=40, Med[1]=39;为Med[1]加血,Mar[1]=40, Mar[2]=40, Med[1]=40;输出 MD 40;
T=2, M 1 39:
Mar[1]=1, Mar[2]=40, Med[1]=40;为Mar[1]加血,Mar[1]=2, Mar[2]=40, Med[1]=40;
输出 M 2;
T=3, M 1 2:
Mar[1]=0, Mar[2]=40, Med[1]=40;Mar[1]死亡,最少血量相同,优先治疗Mar[2],Mar[2]血量达上限40,无变化,Mar[2]=40, Med[1]=40;
输出MD 40

测试点 Nm,Nd T
1-2 <=5 =1
3-6 <=100 <=100
7-10 <=5e3 <=3000

对于100%的数据:1 ≤ Nm,Nd ≤ 5e3,Marine初始血量 ≤ 40,Medic初始血量 ≤ 60,T ≤ 3000, 攻击伤害在int范围内;


[*]请注意,“All Dead”没有叹号!
全局题号
16449
添加于
2017-12-03
提交次数
145
尝试人数
38
通过人数
10