题目描述
在霍格沃茨魔法学校,魔药课的期末成绩公布了!斯内普教授希望将学生的成绩按分数排序,且要求同分学生按照他们名字出现在名单中的顺序排列。这是为了确保评分的公正性,同时考察一个神秘的魔法排序法的效果。请帮助斯内普教授整理出这份成绩单。
输入格式
输入的第一行包含一个整数 ,表示学生的数量 。接下来的 行,每行包含一个学生的姓名 s 和一个整数分数 a[i],姓名和分数之间用一个空格分隔。分数的范围是 1到100。
输出格式
输出应包含排序后的学生列表,每行格式相同:学生的姓名和他们的分数,按分数升序排列。若分数相同,则按照他们在输入中的顺序排列。
样例
3
Draco 82
Harry 95
Hermi 95
Draco 82
Harry 95
Hermi 95
4
Ron 76
Ginny 89
Luna 76
Nevie 89
Ron 76
Luna 76
Ginny 89
Nevie 89
提示
样例1解释
在样例1中,Harry 和 Hermi 分数相同。由于 Harry 在输入中先于 Hermi 出现,所以在输出中 Harry 也应该在 Hermi 前面。
数据范围
| 占比 | 数据范围 |
|---|---|
| $1 \leq n \leq 10^7,s.size() \leq 5,1 \leq a[i] \leq 100$ |
温馨提示
本道题目同时考察同学们对于 空间复杂度 和 时间复杂度 的理解与应用。
需要同学们优化代码的空间效率,以及代码的运行效率(包括算法本身、输入输出的效率以及其他容器、函数的常数效率等)。
tips:
1、结构体中的名字,可以用char数组来存储。
2、在C++中,未关闭流同步的cin和cout的输入与输出效率低于scanf和printf的效率。
3、endl的效率显著低于"\n"的效率。