HM222 英雄排序
HM222 英雄排序
来源: 第 222 集 list容器-排序案例
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
要把自定义的人物放进链表再排序。每个人有姓名、年龄、身高三个属性。编译器不知道该按哪一列排,因此**必须**给成员 sort 提供比较函数(或仿函数);直接 L.sort() 却不写规则会失败。
本题的规则是「高级排序」:
- 先按年龄**升序**;
- 年龄相同再按身高**降序**。
比较函数接收两个人物,返回 bool:年龄相同则「前一个身高大于后一个」为真,否则「前一个年龄小于后一个」为真。
先把输入人物依次尾插入 list,输出排序前的名单;再按上面的规则调用成员 sort,输出排序后的名单。打印时用迭代器取出姓名、年龄、身高。
输入格式
第一行一个整数 \(n\)。
接下来 \(n\) 行,每行:一个不含空格的姓名、一个整数年龄、一个整数身高。
输出格式
共 \(2n\) 行。前 \(n\) 行是排序前,后 \(n\) 行是排序后。每行三个字段:姓名、年龄、身高,字段之间一个空格,行末换行。
当 \(n=0\) 时不输出任何内容。
样例
输入 #1
6
刘备 35 175
曹操 45 180
孙权 40 170
赵云 25 190
张飞 35 160
关羽 35 200
输出 #1
刘备 35 175
曹操 45 180
孙权 40 170
赵云 25 190
张飞 35 160
关羽 35 200
赵云 25 190
关羽 35 200
刘备 35 175
张飞 35 160
孙权 40 170
曹操 45 180
输入 #2
3
甲 10 160
乙 10 180
丙 8 170
输出 #2
甲 10 160
乙 10 180
丙 8 170
丙 8 170
乙 10 180
甲 10 160
说明
\(0 \le n \le 1000\),姓名长度不超过 \(20\),年龄与身高为不超过 \(10^9\) 的整数。
样例 #1:年龄先变成 \(25,35,35,35,40,45\);三个 \(35\) 岁按身高 \(200>175>160\) 排列,因此是关羽、刘备、张飞。自定义类型必须自己写比较函数,这不是全局 sort。
信息
- ID
- 1221
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者