20240616
描述
有一群要互送礼物的朋友,共n人,用序号1~n表示,每个人都准备了一些钱来送礼物。
给出每个人将花在送礼上的钱和将收到他的礼物的人的列表,请确定每个人收到的比送出的钱多的数目(即赚了多少钱,可以为负数)。
约定:
1.每个人送出的钱会平均分给收到他礼物的人。
2.送出的钱永远是整数,即假设送礼人一次向 m 人送出 s 元,每个人应该得到 floor(s/m) 元(向下取整)。剩余未送出的钱应返还给送礼者。
3.一个人不会给自己送礼物。
输入
第一行一个正整数 n,表示人数。
接下来有 n 行内容:每一行中首先包含2个非负整数,第一个数s_i是序号为i的人原有的钱的数目,第二个数m_i是将收到这个人礼物的人的个数,接下来m_i个正整数,表示将要收到第i个人礼物的人的序号。
对于100%的数据,1≤n≤10,0≤s_i≤2000,0≤m_i≤n-1。
输出
输出共n行,第i行输出序号为i的人收到的钱比送出的钱多的数目。
样例
输入
5 200 3 2 3 4 0 2 5 4 500 1 1 0 0 150 2 4 3
输出
302 66 -359 141 -150
提示
样例说明:
有五个人,一开始每个人分别有200 0 500 0 150元。
1号给2、3、4号送礼,每个人送出floor(200/3)=66元,即送出198元,自己还剩2元。
2号给5、4号送礼,但他本就没有钱,故送出0元。
3号给1号送礼,送出500元。
4号没有给人送礼。
5号给4、3号送礼,每个人送出floor(150/2)=75元,共送出150元。
最终,1号赚了500-198=302元,2号赚了66元,3号赚了66+75-500=-359元,4号赚了66+75=141元,5号赚了-150元。