计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn)。
每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。
现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。
输入格式:
输入的第一行给出一个正整数N(≤100),代表考点总数。随后给出N个考点的成绩,格式为:首先一行给出正整数K(≤300),代表该考点的考生总数;随后K行,每行给出1个考生的信息,包括考号(由13位整数字组成)和得分(为[0,100]区间内的整数),中间用空格分隔。
输出格式:
首先在第一行里输出考生总数。随后输出汇总的排名表,每个考生的信息占一行,顺序为:考号、最终排名、考点编号、在该考点的排名。其中考点按输入给出的顺序从1到N编号。考生的输出须按最终排名的非递减顺序输出,获得相同分数的考生应有相同名次,并按考号的递增顺序输出。
输入样例:
输出样例:
-
输入数据结构:输入包括考点总数N,以及每个考点的考生信息。每个考生的信息由一个13位的考号和分数组成。
-
输出要求:输出包括考生的总数,以及一个按最终排名排序的列表,列表中每个条目包含考号、最终排名、考点编号、在该考点的排名。
-
排序规则:考生首先按分数进行降序排序,如果分数相同,则按考号进行升序排序。
-
排名计算:相同分数的考生应该有相同的排名,且在分数相同的情况下,排名应按考号的升序确定。
-
考点内排名:每个考生在各自考点的排名也需要计算出来。
利用结构体存储 学号 成绩 总排名 考点号 本考点的排名 ;然后就是,向结构体里的变量进行赋值。之后排序。
数据结构设计
定义一个结构体来存储考生信息:
输入处理
- 读取考点总数。
- 创建一个大小为的,用于存储每个考点的考生信息。
考点内部排序
对于每个考点:
- 读取考生总数。
- 读取每个考生的考号和分数,并存储在当前考点的中。
- 使用对每个考点的考生进行排序,排序规则先按分数降序,分数相同则按考号升序。
合并和最终排序
- 将所有考点的考生信息合并到一个大的中。
- 使用对这个大的进行排序,使用与上述相同的排序规则。
排名计算
- 遍历排序后的考生列表,根据分数计算最终排名。如果分数相同,则排名应与上一个相同分数的考生相同。
- 对于每个考点的考生,使用二分查找方法在原考点列表中找到他们的考点内排名。
输出
- 输出考生总数。
- 遍历排序后的考生列表,输出每个考生的考号、最终排名、考点编号和考点内排名。