C1147 - 方阵排序

题目描述

小明所在的学校要举行运动会,在运动会开幕式上要进行走方阵的表演,现在小明知道一共有k个方阵,每一个方阵由n行m列的同学组成。

方阵里每个同学的身高不同,为了达到更好的表演效果,老师想对这些方阵进行合理的排序,排序的规则是:

按照每个方阵里所有同学的平均身高进行从小到大的排序,平均身高越小的越排在前面出场,平均身高高的排在后面出场。

平均身高的计算规则是:一个方阵里所有同学的身高之和 除以 方阵里的人数,得到的平均身高保留小数点后2位,注意还需要对第3位小数进行四舍五入。

比如,计算得到的平均身高为178.467,那么最终用于比较的平均身高为178.47,如果计算得到的平均身高为178.464,那么最终用于比较的平均身高为178.46。

现在给定每个方阵的每位同学的身高信息,请你编写一个程序来对所有方阵进行合理的排序,输出最终的方阵数据。

输入格式

第1行,1个正整数k,代表接下来有k个方阵

每个方阵的数据格式为:

n m
h[11] h[12] h[13] ... h[1m]
h[21] h[22] h[23] ... h[2m]
...
h[n1] h[n2] h[n3] ... h[nm]

第1行nm代表方阵为nm

h[11]代表第1行第1列的同学的身高,其他以此类推

输出格式

按照平均身高的排序规则排序后的k个方阵信息,形如:

n m
h[11] h[12] h[13] ... h[1m]
h[21] h[22] h[23] ... h[2m]
...
h[n1] h[n2] h[n3] ... h[nm]
n m
h[11] h[12] h[13] ... h[1m]
h[21] h[22] h[23] ... h[2m]
...
h[n1] h[n2] h[n3] ... h[nm]
...

如果有方阵的平均身高相同,则按照输入的顺序排序,先输入的排在前面,后输入的排在后面

具体参考输入输出样例

样例 #1 输入

5
2 2
170 168
169 180
3 4
170 170 171 140
180 190 199 170
145 146 147 148
3 2
130 150
180 190
178 189
1 1
180
5 4
160 160 160 160
161 160 160 160
160 163 160 160
160 150 160 160
160 160 170 180

样例 #1 输出

5 4
160 160 160 160
161 160 160 160
160 163 160 160
160 150 160 160
160 160 170 180
3 4
170 170 171 140
180 190 199 170
145 146 147 148
3 2
130 150
180 190
178 189
2 2
170 168
169 180
1 1
180

数据范围与提示

100%的数据:$1 \le k, n, m \le 100$,方阵里每个学生的身高在120 - 200之间(单位厘米),且都为整数

提示

浮点数比较可能会存在一定的误差,建议仅使用整型变量进行比较,比如两个方阵的平均身高计算结果分别为:178.467和178.464

那么可以将这两个浮点数转换为17847和17846后进行整数的比较,这样可以避免掉因为浮点数本身的原因带来的不精确比较的问题

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1147.in,输出文件名为:C1147.out