题目
【题目描述】PTA(数据结构与算法题目集7-41)
计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准。每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。
输入格式
输入的第一行给出一个正整数N(≤100),代表考点总数。随后给出N个考点的成绩,格式为:
- 首先一行给出正整数K(≤300),代表该考点的考生总数;
- 随后K行,每行给出1个考生的信息,包括考号(由13位整数字组成)和得分(为[0,100]区间内的整数),中间用空格分隔。
输出格式
首先在第一行里输出考生总数。随后输出汇总的排名表,每个考生的信息占一行,顺序为:考号、最终排名、考点编号、在该考点的排名。考点按输入给出的顺序从1到N编号。考生的输出须按最终排名的非递减顺序输出,获得相同分数的考生应有相同名次,并按考号的递增顺序输出。
解答
问题分析
我们需要将多个考点的成绩合并并根据最终得分进行排名。具体步骤如下:
- 数据结构:
- 使用一个列表存储每个考点的考生信息。每个考生的信息包括考号、得分、所在考点编号和在该考点的排名。
- 需要对考生进行排序:首先按得分降序排列,如果得分相同,则按考号升序排列。
- 步骤:
- 对每个考点,计算考点内的排名,并将所有考生的成绩和考点信息汇总。
- 计算所有考生的最终排名:根据所有考生的得分降序排序,如果得分相同,则按考号升序排序。
- 最终输出:
- 输出总考生数。
- 输出每个考生的考号、最终排名、所在考点编号和该考点的排名。
算法流程
- 输入总的考点数
N
。 - 对每个考点进行处理:
- 输入该考点的考生信息。
- 计算考点内的排名。
- 汇总所有考生的信息,并按总分排序。
- 输出总排名表。
用student 结构体用于存储每个考生的信息,包括考号、得分、考点排名、最终排名和考点编号。