13057 - 1.1.2 Greedy Gift Givers 贪婪的礼物送礼者

一群朋友准备互送礼物,你需要确定每个人收到的钱比送出的钱多多少(即净收益)。
每个人都会准备一些钱来送礼物,这些钱会被平均分给所有他指定的接收者。如果钱无法平均分配,剩余的零钱(不够平分给所有人的部分)由送礼者自己保留。

已知:

  • 每个人的名字互不相同,且长度不超过 14 个字符。
  • 每个人会列出自己要送礼的对象名单。
  • 所有金额均为整数。

你需要计算每个人的净收益(收到的钱减去送出的钱),并按照输入时名字的顺序输出。

输入

第一行:一个整数 NP2 ≤ NP ≤ 10),表示人数。

接下来 NP 行:每行一个名字,表示组里的所有人。

接下来是 NP 个段落,每个段落描述一个人的送礼情况,顺序与名字输入顺序不一定相同,但每个段落的第一行是一个名字(表示送礼者)。
每个段落的格式如下:

  • 第一行:送礼者的名字(一定在之前输入的名字列表中)。
  • 第二行:两个整数 moneynummoney 表示这个人准备用来送礼的总金额(0 ≤ money ≤ 2000),num 表示他将送礼的对象人数(0 ≤ num ≤ NP-1)。
  • 如果 num > 0,接下来有 num 行,每行一个名字,表示接收者的名字(都在名字列表中)。
  • 如果 num = 0,则没有后续行,直接进入下一个段落。

所有数据确保格式正确,不会出现接收者名字不在列表中的情况。

输出

输出 NP 行,每行包含一个名字和一个整数,中间用一个空格隔开。
名字顺序必须与输入时第 2 行到第 NP+1 行的顺序完全一致
整数表示该人的净收益(收到的钱 − 送出的钱)。

样例

输入

5 

dave 

laura 

owen 

vick 

amr 

dave 

200 3 

laura 

owen 

vick 

owen 

500 1 

dave

amr

150 2

vick

owen

laura 

0 2 

amr

vick

vick

 0 0

输出

dave 302
laura 66
owen -359
vick 141
amr -150 

提示

样例说明

  • dave 有 200 元,分给 3 个人(laura, owen, vick),每人得 200/3 = 66 元,余 2 元自己保留。送出 198 元,收到 500(来自 owen) + 0 = 500 元,净收益 = 500 - 198 = 302。
  • laura 有 0 元,分给 2 人(amr, vick),每人得 0 元,送出 0 元,收到 66(来自 dave) = 66 元,净收益 = 66。
  • owen 有 500 元,分给 1 人(dave),送出 500 元,收到 66(来自 dave) + 75(来自 amr) = 141 元,净收益 = 141 - 500 = -359。
  • vick 有 0 元,分给 0 人,送出 0 元,收到 66(来自 dave) + 75(来自 amr) + 0(来自 laura) = 141 元,净收益 = 141。
  • amr 有 150 元,分给 2 人(vick, owen),每人得 75 元,送出 150 元,收到 0(来自 laura) = 0 元,净收益 = -150。

数据范围与约定

  • NP:2 到 10。
  • 名字长度:不超过 14 个字符。
  • 金额:0 ≤ money ≤ 2000
  • 接收者人数:0 ≤ num ≤ NP-1
  • 所有金额均为整数。

来源

USACO

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题