#103. 干员整理

内存限制:16 MiB 时间限制:200 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: jayfeather9

题目描述

管理着一艘舰船,同时他需要负责对于舰船上所有干员(在这里指参与战斗的工作人员)的统计与调度。

但最近小没有完成的工作还有很多,还不能休息。同时也就导致了小没时间完成干员的统计与调度,他听说你的编程水平十分优秀,于是计划把这个工作交给你。

的助理艾雅已经将现在所有干员的信息列在了一张表单上输入给你,上面列明了每个干员的编号、姓名、职业与等级。(保证任意两个干员编号不同)

你需要将表单分别根据:1、职业优先,职业相同按照编号从小到大,和2、等级从小到大优先,等级相同按照编号从小到大排序,并分别输出。

同时,你还会读取个调度需求,每个需求包括四个数值:要求的干员数量,要求的干员职业,要求的干员等级最小值(含)和最大值(含)。对于每个需求,你需要判断是否能满足需求,如果可以满足,优先选取编号小的干员并按照编号从小到大输出其编号到标准输出流中。如果不能满足某个需求,输出"DAMEDANE"并换行。(不包括引号)

注意:如果一个干员已经在一个可以被满足的需求中被调度,在之后的需求中便不能再被调度,即优先满足靠前的调度需求。(若一个调度需求不可满足但能被部分满足,可以被满足的部分对应的干员不会被调度)

附录:干员职业包括如下八个(不包括引号):"caster","medic","supporter","specialist","vanguard","guard","defender","sniper"。按照干员职业排序时请按照此处出示的顺序从后往前排序。

输入格式

标准输入流中你将读取如下内容:

总计行,第一行为两个整型:,以空格分隔。前者代表干员总数,后者代表调度需求数量。

此后的行为干员列表,每行包括:编号,姓名,职业和等级

此后的行为调度需求,每行包括:干员数量,职业,两个整型:干员等级最小值(含)和最大值(含)

保证上述字符串中均不包括空白符,且整型均包括在unsigned int的数值范围内。

输出格式

你需要在标准输出流中输出如下内容:

总计行。

开始的行,输出排序2所要求的内容,每行包括:整型,字符串,字符串和整型,含义如上。。

此后的行,输出排序1所要求的内容,每行包括:整型,字符串,字符串和整型,含义如上。

此后的行,每行对应一个调度需求,如果不能满足需求则在本行输出字符串"DAMEDANE"(不包括引号),如果可以满足需求则按照编号从小到大顺序输出所调度干员的干员编号,以空格分割。

样例

假设标准输入流中有如下内容:

5 2
1 Ptilopsis medic 88
2 Silence medic 66
3 Ifrit caster 99
4 Magallan supporter 99
5 Rosmontis sniper 2
2 medic 1 100
6 supporter 50 60

则你应当在标准输出流中输出如下内容:

5 Rosmontis sniper 2
2 Silence medic 66
1 Ptilopsis medic 88
3 Ifrit caster 99
4 Magallan supporter 99
5 Rosmontis sniper 2
4 Magallan supporter 99
1 Ptilopsis medic 88
2 Silence medic 66
3 Ifrit caster 99
1 2
DAMEDANE

数据范围与提示

保证,

保证干员姓名不超过五十个字符

通告标题

通告内容

已知晓