#7139. 签到题?真的假的

签到题?真的假的

题目背景

西柚招生部老师不小心把排好序的成绩表打乱了,我们一起来帮帮他吧^.^

题目描述

给出班里 nn 名学生的四门科目(语文、数学、英语、物理)成绩,以及每名学生的性别。在读入数据后,先剔除成绩不合法的学生:

  • 语文、数学、英语:成绩必须满足:0≤score≤1500\le score \le150
  • 物理:成绩必须满足:0≤score≤1000\le score \le100

只要任意一科成绩不满足范围,该学生直接剔除,不参与后续任何操作。

对剩下合法学生,完成以下三部分任务:

  1. 按名字字典序从小到大输出每名学生:名字、性别、语文、数学、英语、物理、平均分;
  2. 分别按语文、数学、英语、物理每科成绩从高到低,输出该科前三名学生的名字;
  3. 按总分从低到高,分别取出男生、女生中总分最差的 5 名学生,每行输出一名男生和一名女生的名字(配对输出)。

总分 = 语文+数学+英语+物理,平均分 = 总分 / 4 四门单科成绩、平均分输出均保留2位小数

输入格式

第一行为整数 nn,表示学生数目。

接下来 nn 行,每行格式为:名字 性别 语文 数学 英语 物理,中间用单个空格隔开。

  • 名字只包含英文字母,长度不超过 20
  • 性别为布尔值:true 表示男生,false 表示女生
  • 四科成绩为实数

输出格式

一共输出三部分内容:

  1. 第一部分:合法学生按名字字典序从小到大依次输出,每行 名字 性别 语文 数学 英语 物理 平均分;单科成绩、平均分输出保留两位小数,性别为中文字符 男 / 女;
  2. 第二部分:共4行,依次对应语文、数学、英语、物理。每行输出该科前三名学生的名字,名字之间空格隔开;成绩高的排在前面;分数相同时,姓名字典序更小的优先;
  3. 第三部分:共5行,每行输出 男生名字 女生名字。依次输出男生、女生里总分最低的第1、2、3、4、5名(总分由低到高);总分相同时,姓名字典序更小的优先。

样例输入

13
Alice false 95.50 92.20 88.10 91.40
Bob true 70.10 65.30 60.50 75.20
Cindy false 160.00 90.00 95.00 85.00
David true 55.00 60.00 50.00 45.00
Eva false 60.00 58.00 65.00 71.00
Frank true 80.00 75.00 85.00 70.00
Grace false 75.00 80.00 78.00 83.00
Henry true 45.00 50.00 55.00 40.00
Ivy false 50.00 55.00 45.00 60.00
Jack true 65.00 70.00 75.00 68.00
Lily false -5.00 80.00 90.00 88.00
Tom true 88.00 90.00 92.00 105.00
Zoe false 72.00 66.00 81.00 77.00

样例输出

Alice 女 95.50 92.20 88.10 91.40 91.80
Bob 男 70.10 65.30 60.50 75.20 67.78
David 男 55.00 60.00 50.00 45.00 52.50
Eva 女 60.00 58.00 65.00 71.00 63.50
Frank 男 80.00 75.00 85.00 70.00 77.50
Grace 女 75.00 80.00 78.00 83.00 79.00
Henry 男 45.00 50.00 55.00 40.00 47.50
Ivy 女 50.00 55.00 45.00 60.00 52.50
Jack 男 65.00 70.00 75.00 68.00 69.50
Zoe 女 72.00 66.00 81.00 77.00 74.00
Alice Frank Grace
Alice Grace Frank
Alice Frank Zoe
Alice Grace Zoe
Henry Ivy
David Eva
Bob Zoe
Jack Grace
Frank Alice

数据范围与约定

0<n<200 < n < 20; 保证剔除非法学生之后,男生人数、女生人数均不少于5人。