Start: Jan, 08, 2019 22:00:00
2018年秋季学期程序设计基础(C语言)期末考试(补题)
End: Jan, 20, 2019 02:00:00
Time elapsed:
Time remaining:

成绩单统计-初级 2559

Time Limit:  10 s      Memory Limit:   256 MB
Submission:183     AC:26     Score:5

Description

期末考试之后,老师们都要在成绩单中获取一些有用的信息,但是数据量太大,人工统计总会耗费一些时间,编写一个程序来统计将会是一个较好的选择。现在,请你编写一个程序,要求能满足下述内容。

一份成绩单中包含 N 条信息,每条信息包含 学号,高等数学成绩,程序设计基础成绩,线性代数成绩

现有如下需求:

1. 查询某一位同学的成绩单

2. 查询某门课的平均成绩

3. 全体同学总成绩按降序排列的成绩单

输入输出具体格式及相关要求请看input和output

Input

输入为单组输入

第一行输入成绩单总数据行数N(1 <= N <= 10000)

之后 N 行输入 N 条信息

每条信息包含4个数据项,数据项依次表示:学号,高等数学成绩,程序设计基础成绩,线性代数成绩

学号为5位数字,即在[00000,99999]的范围内

课程成绩均为[0,100]的数字

之后为一个数字Q(1<=Q<=100) 表示有Q条询问

随后为Q条询问,询问格式如下:

1.  1 x表示上述的第一个需求,即学号为x的同学的成绩单

2.  2 y表示上述的第二个需求,即y课的平均成绩(其中高等数学的y为1,程序设计基础为2,线性代数为3)

输入保证学号唯一

Output

首先对于上述每一条询问,输出相关内容。

对于询问1:第一行先输出“Query #c: 1 x” 表示第c个询问是查询学号为x的同学的成绩单

之后一行以如下格式输出该同学成绩[总成绩 高等数学成绩 程序设计基础成绩 线性代数成绩]。

对与询问2:第一行先输出“Query #c: 2 y” 表示第c个询问是查询y课的平均成绩

之后一行输出y课的平均成绩,输出四舍五入保留两位小数

在Q个询问之后,完成需求3,即输出全体同学总成绩按降序排列的成绩单,每一行输出一个同学的成绩,成绩格式为[学号 总成绩 高等数学成绩 程序设计基础成绩 线性代数成绩](学号为5位数字)。

若总成绩相同,按高等数学成绩从大到小排列,若高等数学还相同, 按照程序设计基础成绩从大到小排列,若程序设计基础成绩也相同,按线性代数成绩从大到小排列,若线性代数成绩也相同,按学号从小到大排序。

Samples

input
5 00000 100 99 98 00001 80 90 95 83831 78 90 88 45678 55 78 90 44425 78 94 100 3 1 44425 2 1 2 3
output
Query #1: 1 44425 272 78 94 100 Query #2: 2 1 78.20 Query #3: 2 3 94.20 00000 297 100 99 98 44425 272 78 94 100 00001 265 80 90 95 83831 256 78 90 88 45678 223 55 78 90
input
7 25411 49 21 17 18524 95 79 50 22202 50 96 78 54321 2 63 11 11333 95 90 97 31507 2 61 13 12345 49 21 17 2 2 3 1 22202
output
Query #1: 2 3 40.43 Query #2: 1 22202 224 50 96 78 11333 282 95 90 97 18524 224 95 79 50 22202 224 50 96 78 12345 87 49 21 17 25411 87 49 21 17 54321 76 2 63 11 31507 76 2 61 13

Hint

因为是初级,无需考虑效率问题。太过暴力可能会TLE。

学号前面的0也是要输出的。