A6560. 「THUPC 2017」体育成绩统计 / Score
编程题
提高+/省选-
知识点
题目描述
正所谓「无体育,不清华」。为了更好地督促同学们进行体育锻炼,更加科学地对同学们进行评价,五道口体校的老师们在体育成绩的考核上可谓是煞费苦心。然而每到学期期末时,面对海量的原始数据,如何对数据进行处理,得到同学们的体育总评成绩却又成了体育部老师的一大难题。
对于大一的同学们来说,体育课的总评成绩由五部分组成:体育课专项成绩(满分 $50$ 分)、长跑测试成绩(满分 $20$ 分)、「阳光长跑」成绩(满分 $10$ 分)、体质测试成绩(满分 $10$ 分)、「大一专项计划」成绩(满分 $10$ 分)。
体育课专项成绩将由任课体育老师直接给出。
长跑测试成绩将由期末长跑测试确定,其中男生需进行 $3000$ 米测试,女生需进行 $1500$ 米测试,具体评分标准为:
||$20$|$18$|$16$|$14$|$12$|$10$|$8$|$6$|$4$|$2$|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|男生|$12'30''$|$13'00''$|$13'30''$|$14'00''$|$14'30''$|$15'10''$| $15'50''$|$16'30''$|$17'10''$|$18'00''$|
|女生|$6'40''$|$6'57''$|$7'14''$|$7'31''$|$7'50''$|$8'05''$|$8'20''$|$8'35''$|$8'50''$|$9'00''$|
「阳光长跑」是通过手机 App 来记录同学们的课外长跑情况,根据对原始跑步数据进行筛选,得到课外长跑的合法次数,来最终确定此部分的成绩。
一条合法的锻炼记录需同时满足:
1. 男生长跑距离 $3000$ 米以上(包含 $3000$ 米),女生长跑距离 $1500$ 米以上(包含 $1500$ 米);
2. 平均速度(运动距离/(结束时间-开始时间))不慢于 $2$ 米/秒,且不快于 $5$ 米/秒;
3. 总暂停时间不得超过 $4$ 分 $30$ 秒;
4. 平均步幅(距离/步数)不超过 $1.5$ 米;
5. 开始时间需与上条合法记录的结束时间间隔 $6$ 小时以上(包含 $6$ 小时);
「阳光长跑」的合法次数与该部分得分的对应如下:
|分数|$10$|$9$|$8$|$7$|$6$|$4$|$2$|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|次数|$[21,+\infty)$|$[19,20]$|$[17,18]$|$[14,16]$|$[11,13]$|$[7,10]$|$[3,6]$|
对于体质测试部分,若达到合格标准则得到该部分满分 $10$ 分,否则该部分不得分。
「大一专项计划」的 $10$ 分由两部分组成:出勤次数占 $5$ 分,期末检测占 $5$ 分。
其中出勤次数为「班级训练营」的参加次数和「阳光长跑」的合法次数之和,出勤得分与出勤次数的对应如下:
|分数|$5$|$4$|$3$|$2$|$1$|
| :---: | :---: | :---: | :---: | :---: | :---: |
|次数|$[18,+\infty)$|$[15,17]$|$[12,14]$|$[9,11]$|$[6,8]$|
不难看出,要想准确无误地计算出每个人的体育成绩并不是一件轻松的事,于是体育部的老师找到了正在打校赛的你,他将提供所有需要用到的数据,希望你帮他算算清华大一同学的体育总评成绩及等级。
百分制成绩与等级、绩点对应如下:
|A|A-|B+|B|B-|C+|C|C-|D+|D|F|
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|$[95, 100]$|$[90, 95)$|$[85, 90)$|$[80, 85)$|$[77, 80)$|$[73, 77)$|$[70, 73)$|$[67, 70)$|$[63, 67)$|$[60, 63)$|$[0, 60)$|
对于大一的同学们来说,体育课的总评成绩由五部分组成:体育课专项成绩(满分 $50$ 分)、长跑测试成绩(满分 $20$ 分)、「阳光长跑」成绩(满分 $10$ 分)、体质测试成绩(满分 $10$ 分)、「大一专项计划」成绩(满分 $10$ 分)。
体育课专项成绩将由任课体育老师直接给出。
长跑测试成绩将由期末长跑测试确定,其中男生需进行 $3000$ 米测试,女生需进行 $1500$ 米测试,具体评分标准为:
||$20$|$18$|$16$|$14$|$12$|$10$|$8$|$6$|$4$|$2$|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|男生|$12'30''$|$13'00''$|$13'30''$|$14'00''$|$14'30''$|$15'10''$| $15'50''$|$16'30''$|$17'10''$|$18'00''$|
|女生|$6'40''$|$6'57''$|$7'14''$|$7'31''$|$7'50''$|$8'05''$|$8'20''$|$8'35''$|$8'50''$|$9'00''$|
「阳光长跑」是通过手机 App 来记录同学们的课外长跑情况,根据对原始跑步数据进行筛选,得到课外长跑的合法次数,来最终确定此部分的成绩。
一条合法的锻炼记录需同时满足:
1. 男生长跑距离 $3000$ 米以上(包含 $3000$ 米),女生长跑距离 $1500$ 米以上(包含 $1500$ 米);
2. 平均速度(运动距离/(结束时间-开始时间))不慢于 $2$ 米/秒,且不快于 $5$ 米/秒;
3. 总暂停时间不得超过 $4$ 分 $30$ 秒;
4. 平均步幅(距离/步数)不超过 $1.5$ 米;
5. 开始时间需与上条合法记录的结束时间间隔 $6$ 小时以上(包含 $6$ 小时);
「阳光长跑」的合法次数与该部分得分的对应如下:
|分数|$10$|$9$|$8$|$7$|$6$|$4$|$2$|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|次数|$[21,+\infty)$|$[19,20]$|$[17,18]$|$[14,16]$|$[11,13]$|$[7,10]$|$[3,6]$|
对于体质测试部分,若达到合格标准则得到该部分满分 $10$ 分,否则该部分不得分。
「大一专项计划」的 $10$ 分由两部分组成:出勤次数占 $5$ 分,期末检测占 $5$ 分。
其中出勤次数为「班级训练营」的参加次数和「阳光长跑」的合法次数之和,出勤得分与出勤次数的对应如下:
|分数|$5$|$4$|$3$|$2$|$1$|
| :---: | :---: | :---: | :---: | :---: | :---: |
|次数|$[18,+\infty)$|$[15,17]$|$[12,14]$|$[9,11]$|$[6,8]$|
不难看出,要想准确无误地计算出每个人的体育成绩并不是一件轻松的事,于是体育部的老师找到了正在打校赛的你,他将提供所有需要用到的数据,希望你帮他算算清华大一同学的体育总评成绩及等级。
百分制成绩与等级、绩点对应如下:
|A|A-|B+|B|B-|C+|C|C-|D+|D|F|
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|$[95, 100]$|$[90, 95)$|$[85, 90)$|$[80, 85)$|$[77, 80)$|$[73, 77)$|$[70, 73)$|$[67, 70)$|$[63, 67)$|$[60, 63)$|$[0, 60)$|
输入格式
从标准输入读入数据。
输入第一行,包含一个正整数 $n$,表示大一年级的学生人数。
接下来 $n$ 行,每行表示一位学生(按学号字典序给出),各项数据之间用空格隔开,一位学生的数据包括:
- 一个长度为 $10$ 的正整数 $p$(数据保证不包含前导零),表示第 $i$ 位同学的学号;
- 一个字符,
- 一个介于 $0$ 到 $50$ 之间的非负整数 $s$,表示第 $i$ 位同学的体育课专项成绩;
- 一个形如
- 一个字符,
- 一个介于 $0$ 到 $5$ 之间的非负整数 $f$,表示第 $i$ 位同学的「大一专项计划」的期末检测成绩;
- 一个非负整数 $c$,表示第 $i$ 位同学参加「班级训练营」的次数。
接下来一行,包括一个非负整数 $m$,表示需要筛选的「阳光长跑」数据条数。
接下来 $m$ 行,每行表示一条需要筛选的「阳光长跑」数据(按开始时间顺序给出),各项之间用空格隔开,一条数据包括:
- 一个形如
- 一个长度为 $10$ 的正整数 $p$(数据保证不包含前导零),表示第 $j$ 条记录的来源学号;
- 两个形如
- 一个精确到小数点后两位的非负浮点数 $l$,表示第 $j$ 条记录的运动距离,单位为千米;
- 一个形如
- 一个非负整数 $s$,表示第 $j$ 条记录的运动总步数。
输入格式可参见下发样例文件。
输入第一行,包含一个正整数 $n$,表示大一年级的学生人数。
接下来 $n$ 行,每行表示一位学生(按学号字典序给出),各项数据之间用空格隔开,一位学生的数据包括:
- 一个长度为 $10$ 的正整数 $p$(数据保证不包含前导零),表示第 $i$ 位同学的学号;
- 一个字符,
M 或 F,若为 M 表示第 $i$ 位同学为男生,若为 F 则表示第 $i$ 位同学为女生;- 一个介于 $0$ 到 $50$ 之间的非负整数 $s$,表示第 $i$ 位同学的体育课专项成绩;
- 一个形如
a'b" 的字符串,表示第 $i$ 位同学的期末长跑测试成绩为 $a$ 分 $b$ 秒;- 一个字符,
P 或 F,若为 P 表示第 $i$ 位同学的体质测试通过,若为 F 则表示第 $i$ 位同学的体质测试没有通过;- 一个介于 $0$ 到 $5$ 之间的非负整数 $f$,表示第 $i$ 位同学的「大一专项计划」的期末检测成绩;
- 一个非负整数 $c$,表示第 $i$ 位同学参加「班级训练营」的次数。
接下来一行,包括一个非负整数 $m$,表示需要筛选的「阳光长跑」数据条数。
接下来 $m$ 行,每行表示一条需要筛选的「阳光长跑」数据(按开始时间顺序给出),各项之间用空格隔开,一条数据包括:
- 一个形如
2017MMDD 的字符串,表示第 $j$ 条记录的完成日期;- 一个长度为 $10$ 的正整数 $p$(数据保证不包含前导零),表示第 $j$ 条记录的来源学号;
- 两个形如
hh:mm:ss 的字符串,分别表示第 $j$ 条记录的开始时间和结束时间;- 一个精确到小数点后两位的非负浮点数 $l$,表示第 $j$ 条记录的运动距离,单位为千米;
- 一个形如
a'b" 的字符串,表示第 $j$ 条记录的总暂停时间为 $a$ 分 $b$ 秒;- 一个非负整数 $s$,表示第 $j$ 条记录的运动总步数。
输入格式可参见下发样例文件。
输出格式
输出到标准输出。
输出文件共包括 $n$ 行。请你按照学号**字典序**输出每一位同学的学号、百分制总评成绩以及等级。每位同学一行,一行内用空格隔开。
输出文件共包括 $n$ 行。请你按照学号**字典序**输出每一位同学的学号、百分制总评成绩以及等级。每位同学一行,一行内用空格隔开。
输入输出样例
输入 #1
1 2015011233 M 34 14'30" P 3 3 8 20170508 2015011233 17:02:33 17:19:33 2.99 0'0" 3333 20170509 2015011233 17:12:15 17:38:46 3.01 2'3" 4300 20170510 2015011233 22:03:06 22:13:08 3.05 0'0" 2772 20170511 2015011233 22:08:05 22:28:13 3.02 5'3" 3775 20170512 2015011233 18:03:12 18:17:56 3.02 0'0" 2001 20170513 2015011233 17:30:23 17:46:08 3.01 0'0" 3020 20170513 2015011233 22:03:34 22:20:08 3.04 2'0" 3058 20170514 2015011233 07:16:22 07:32:34 3.00 0'0" 3244
输出 #1
2015011233 59 F
说明/提示
对于 $100\%$ 的数据,
$n\leq{{4000}},$
$0 \leq a,b \leq 59,$
$0 \leq c \leq 100,$
$m\leq{{1.5\times 10^5}},$
$0 \leq l \leq 100,$
$0 \leq s \leq 10^6$。
$n\leq{{4000}},$
$0 \leq a,b \leq 59,$
$0 \leq c \leq 100,$
$m\leq{{1.5\times 10^5}},$
$0 \leq l \leq 100,$
$0 \leq s \leq 10^6$。