# 时间管理与多人运动 预估时间限制:4.5 秒。内存限制:512 MB。 实际时限以标准程序在目标环境的最慢用例中位时间乘以 $2$ ,按 $0.5$ 秒向上取整。参考环境见[评测说明](../../../docs/评测环境与性能.md)。 ## 背景故事 ——众所周知,CCPC/ICPC 是一系列多人运动比赛。 退役后,你来到一所文理学院,担任一支 ACM 队的队长。你需要安排训练时段,让队伍参加一系列比赛。凭借神乎其神的预测能力,你已经知道在每个时段参加每场比赛能有多大收获。不过,每个时段必须恰好参加一场比赛,每场比赛也必须恰好参加一次,因此时段数与比赛数相同。 不同比赛的收获不能简单相加,因此你把收获划分为 0 到 70 共 71 个等级。你希望先让最高等级的收获尽可能多,再依次考虑较低等级。请给出最优安排下各等级收获的次数。 ## 形式化问题描述 有 $n$ 个时段和 $n$ 项比赛。每个时段必须安排恰好一项比赛,每项比赛必须恰好安排一次。在时段 $i$ 安排比赛 $j$ ,获得的收益等级为 $a_{ij}$ ,是零到七十之间的整数。 令 $c_g$ 为等级 $g$ 的收益出现次数。选择一种安排,使序列 $$ (c_{70},c_{69},\ldots,c_0) $$ 字典序最大,并输出这个序列。即先最大化七十级次数,在此基础上最大化六十九级次数,依此类推。若 $n=0$ ,所有次数均为零。 ## 输入格式 第一行一个整数 $n$ .接下来 $n$ 行,每行 $n$ 个整数;第 $i$ 行第 $j$ 个整数是 $a_{ij}$ . ## 输出格式 输出一行七十一个整数,依次为最优的 $c_{70},c_{69},\ldots,c_0$ ,相邻整数用一个空格分隔。 ## 样例 ### 样例 1 ### 输入 ```text 5 5 5 5 5 5 5 3 2 1 1 2 2 2 2 2 2 5 2 5 2 4 4 1 1 1 ``` ### 输出 ```text 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 1 0 0 ``` ### 样例 2 ### 输入 ```text 0 ``` ### 输出 ```text 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ``` ### 样例 3 ### 输入 ```text 3 70 69 0 70 0 69 0 70 68 ``` ### 输出 ```text 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ``` ## 样例解释 样例一可获得三次五级、一次四级、一次二级收益。样例二没有比赛,仍输出七十一个零。样例三可获得两次七十级和一次六十九级收益。 ## 数据范围与保证 $0\le n\le500$ ,$0\le a_{ij}\le70$ . | 分值比例 | 额外条件 | | --- | --- | | 100% | 无额外条件 |