#P6594. 合理分配挖掘出的宝藏

合理分配挖掘出的宝藏

题目描述

你是寻宝团队的领队。在你的出色指挥下,团队成功完成了一次任务,获得了大量宝藏。现在,唯一但至关重要的问题是如何将这些宝藏合理地分配给每位队员。

挖掘出的宝藏包括各种珍贵物品:金锭、镶嵌璀璨宝石的珠宝、精美的工艺品等。每位队员分别对这些物品的价值进行评估,这些估值在队员之间是一致的。也就是说,对于任意两件物品,当某位队员估计其中一件的价值高于另一件时,其他队员不会得出相反的结论,尽管有些人可能会给出相等的估值。

队员们都很理性,理解想要将物品均匀分配非常困难。因此,队员们不会因为根据自己的估值,自己得到的物品总价值低于他人而抱怨。然而,如果某位队员觉得自己分到的份额显得不合理地寒酸,与他人的份额差距过大,他们可能会生气。他们无法忍受的是:即使某位队员去掉自己认为价值最低的物品后,自己的份额依然明显低于这位队员。

你作为领队的最后任务是决定每个队员得到哪些物品,以确保没有队员因此而心生不满。部分队员可能分不到任何物品,只要他们对此不会感到不满即可。

输入

输入由一个测试用例组成,格式如下:

$$n\ m \\ v_{1,1}\ v_{1,2}\ \cdots\ v_{1,m} \\ \vdots \\ v_{n,1}\ v_{n,2}\ \cdots\ v_{n,m} $$

第一行包含两个正整数 nnmm,它们的乘积不超过 2×1052 \times 10^5nn 是寻宝团队成员的数量,mm 是宝藏物品的数量。成员和物品的编号分别为 11nn11mm。接下来的 nn 行中,每行包含 mm 个正整数,且不超过 2×1052 \times 10^5,这些数字按降序排列:vi,1vi,2vi,mv_{i,1} \geq v_{i,2} \geq \cdots \geq v_{i,m}。其中 vi,jv_{i,j} 是成员 ii 对物品 jj 的估算价值。

输出

如果可以在不让任何成员生气的情况下分配物品,请输出这样的分配结果,以一行的形式输出 mm 个正整数 x1,x2,,xmx_1, x_2, \ldots, x_m,用空格分隔。这里,xj=ix_j = i 表示成员 ii 获得物品 jj。如果存在两个或多个这样的分配,任何一个都可以被视为正确。如果无法在不让任何成员生气的情况下分配物品,请输出 0。

2 3
4 2 1
3 3 3
1 2 1
1 7
64 32 16 8 4 2 1
1 1 1 1 1 1 1

样例解释

让我们定义 Vi(X)V_i(X) 为成员 ii 对集合 XX 中物品的估算价值之和。在样例 1 中,V1({1,3})=4+1=5V_1(\{1, 3\}) = 4 + 1 = 5V1({2})=2V_1(\{2\}) = 2V2({1,3})=3+3=6V_2(\{1, 3\}) = 3 + 3 = 6,而 V2({2})=3V_2(\{2\}) = 3

输出中展示的分配不会让成员 1 感到生气,因为 V1({1,3})V1({2})V_1(\{1, 3\}) \geq V_1(\{2\})。成员 2 也不会感到生气,尽管 V2({2})<V2({1,3})V_2(\{2\}) < V_2(\{1, 3\})。如果成员 1 放弃其中一件物品,那么成员 1 接收到的物品的价值总和将变为 V1({1})=3V_1(\{1\}) = 3V1({3})=3V_1(\{3\}) = 3,这两个值都不高于 V2({2})=3V_2(\{2\}) = 3

需要注意的是,他们的分享不应该被互换。例如,如果成员 1 收到 {2}\{2\},而成员 2 收到 {1,3}\{1, 3\},这将使得成员 1 感到生气,因为 V1({2})=2<4=V1({1})V_1(\{2\}) = 2 < 4 = V_1(\{1\}),这意味着即使成员 2 放弃物品 3(在 {1,3}\{1, 3\} 中估算较低的物品),剩下的物品 1 的估算价值仍然高于 V1({2})=2V_1(\{2\}) = 2

在样例 2 中,只有你一个成员,因此可以把所有物品都分配给自己。恭喜你!