一群朋友准备互送礼物,你需要确定每个人收到的钱比送出的钱多多少(即净收益)。
每个人都会准备一些钱来送礼物,这些钱会被平均分给所有他指定的接收者。如果钱无法平均分配,剩余的零钱(不够平分给所有人的部分)由送礼者自己保留。
已知:
你需要计算每个人的净收益(收到的钱减去送出的钱),并按照输入时名字的顺序输出。
第一行:一个整数 NP(2 ≤ NP ≤ 10),表示人数。
接下来 NP 行:每行一个名字,表示组里的所有人。
接下来是 NP 个段落,每个段落描述一个人的送礼情况,顺序与名字输入顺序不一定相同,但每个段落的第一行是一个名字(表示送礼者)。
每个段落的格式如下:
money 和 num,money 表示这个人准备用来送礼的总金额(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。0 ≤ money ≤ 2000。0 ≤ num ≤ NP-1。USACO