#P2691. Request for Proposal

Request for Proposal

描述

当政府、军队或商业机构希望进行大宗采购时,它们通常会先发布一份 提案请求(RFPRFP),其中列出了成功提案必须满足的一系列要求。竞争供应商随后提交 提案,说明哪些要求被满足,并标明若该提案被接受时的报价。

由于这些机构由官僚人员管理,并且需要对其他同样由官僚人员管理的机构负责,因此必须从选择过程中完全排除人为判断。为此,提案评审人员会收到 特性表,该表每一列代表一个要求,额外的一列代表价格,每一行代表一个提案。评审人员会阅读每个提案,并标记其中满足的要求;对于每个满足的要求,会在对应行(提案)和列(要求)中打勾。在所有提案评估完成后,计算每行的勾选总数。如果某个提案的勾选数量等于要求总数,则称该提案为 完全合规;否则称为部分合规。许多机构会将合同授予 最低报价的完全合规提案,即完全合规提案中价格最低的。如果没有完全合规提案,许多机构会使用以下公式评估部分合规性:

合规性=满足的要求数量总要求数量\text{合规性} = \frac{\text{满足的要求数量}}{\text{总要求数量}}

你的任务是选择合规性最高的提案;如果有多个提案合规性相同,则选择其中价格最低的;如果合规性和价格均相同,则选择 输入顺序最先出现的提案。

输入

输入包含多个RFPRFP及其相关提案的信息。每个RFPRFP的信息包括:

  • 一行两个整数:0<n10000 < n \leq 1000(要求数量)和 pp(提案数量)。若输入 0000,则表示输入结束。
  • 接下来的 nn 行,每行一个要求名称(最多8080个字符,区分大小写)。
  • 对于每个提案:
    一行给出提案名称(最多8080个字符)。
    一行包含一个浮点数 dd(价格)和一个整数 0rn0 \leq r \leq n(满足的要求数量)。
    接下来的 rr 行,每行一个满足的要求名称(均来自RFPRFP要求列表,且不重复)。

输出

对于每个RFPRFP,输出其编号(见样例),后接最佳提案的名称(按上述标准选择)。每组RFPRFP的输出之间空一行。

输入数据 11

6 4
engine
brakes
tires
ashtray
vinyl roof
trip computer
Chevrolet
20000.00 3
engine
tires
brakes
Cadillac
70000.00 4
ashtray
vinyl roof
trip computer
engine
Hyundai
10000.00 3
engine
tires
ashtray
Lada
6000.00 1
tires
1 1
coffee
Starbucks
1.50 1
coffee
0 0

输出数据 11

RFP #1
Cadillac

RFP #2
Starbucks

来源

滑铁卢当地 1998 年 10 月 17 日