原题:https://pintia.cn/problem-sets/15/problems/888

思路:

创建一个结构体,里面包含每个考生的各种信息:姓名,成绩,分区排名,最终排名,地区

struct stu {string name;int score,place,Sum_rank,zone_rank;
}List[MAXSIZE];

排序分成三步:

第一步,对分区学生按照成绩高低进行排名,同时将排名记录进该考试信息中;

第二步,对所有考生按照成绩高低进行排名,同时将排名记录进该考试信息中;

第三步,对所有考生按照总地区的排名进行排序,如果出现并列的则按小学号排序;

完成第三步之后直接按顺序输出即可;

#include<iostream>
#include<algorithm>
#include<string>
#define MAXSIZE 30010
using namespace std;
struct stu {string name;int score,place,Sum_rank,zone_rank;
}List[MAXSIZE];
bool cmp(stu a, stu b) { return a.score > b.score; }
bool cmp1(stu a, stu b)
{return a.Sum_rank != b.Sum_rank ? a.Sum_rank < b.Sum_rank : a.name < b.name;
}
int main()
{int n, cnt = 0;scanf("%d", &n);for (int i = 1; i <= n; i++){int k;struct stu stus[300];scanf("%d", &k);for (int j = 0; j < k; j++){cin >> stus[j].name>>stus[j].score;stus[j].place = i;            }sort(stus, stus + k, cmp);//开始处理分区排名,并且处理并列的那些排名for (int j = 0; j < k; j++){int p = j;if (stus[j - 1].score == stus[j].score && j >= 1) {while (stus[p - 1].score == stus[p].score && p >= 1)p--;}stus[j].zone_rank = p + 1;List[cnt++] = stus[j];//存储到总表之中}}sort(List, List + cnt,cmp);//对总表进行排名,并且处理并列的排名for (int j = 0; j < cnt; j++){int p = j;if (List[j - 1].score == List[j].score && j >= 1) {while (List[p - 1].score == List[p].score && p >= 1)p--;}List[j].Sum_rank = p+1;}sort(List, List + cnt, cmp1);cout << cnt << endl;for (int i = 0; i < cnt; i++){cout << List[i].name << " " << List[i].Sum_rank << " " << List[i].place << " " << List[i].zone_rank << endl;}return 0;
}

7-41 PAT排名汇总 (25 分)多样排序相关推荐

  1. 7-227 PAT排名汇总 (25 分)

    7-227 PAT排名汇总 (25 分) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设 ...

  2. 7-41 PAT排名汇总 (25 分)(详解+思路+重写sort函数)兄弟们冲呀呀呀呀呀呀呀

    一:题目 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序 ...

  3. PTA 天梯赛 7-41 PAT排名汇总 (25 point(s))

    7-41 PAT排名汇总 (25 point(s)) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法 ...

  4. 【PAT乙】1085 PAT单位排行 (25分) map排序

    problem 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤10 ​5 ​​ ),即考生人数.随后 N 行,每行 ...

  5. 1085 PAT单位排行 (25分)-PAT乙级真题-C++实现

    1085 PAT单位排行 (25分)-PAT乙级真题-C++实现 题目描述: 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整 ...

  6. 1095 解码PAT准考证 (25分)击破测试点3、4,50ms内通关

    1095 解码PAT准考证 (25分)测试点34用时低于35ms 前言 一.题目简介 二.原题内容 1. 设定 2. 输入格式 3. 输出格式 三.题目分析 1. 要求1分析 2. 要求2分析 3. ...

  7. 7-2 奥运排行榜 (25分)非排序算法更低时间复杂度

    7-2 奥运排行榜 (25分) 每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如中国金牌总数列第一的时候,中国媒体就公布"金牌榜":而美国的 ...

  8. 【最详细解析+难点分析】1085 PAT单位排行 (25分)

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N( ...

  9. 1095 解码PAT准考证 (25 分)

    PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: 第 5~10 位是考试日期,格式为年.月. ...

最新文章

  1. openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old
  2. 【企业管理】《人与绩效》读书笔记--怎样做员工
  3. 一个 .Net Hashtable 的锁的疑惑和解决
  4. 图像数据格式基础知识
  5. TCP、UDP套接字的数据传输
  6. spring常见术语理解
  7. MSSQL OPTION语句详解
  8. 腾讯 android 插件,腾讯 Bugly for Xamarin Android 的插件
  9. 项目新添加页面svn上传
  10. [4G5G专题-113]:部署 - LTE同频组网、抗干扰技术、小区干扰协调ICIC、物理小区标识PCI规划
  11. Oracle 同义词,赋权语句图解记录
  12. Excel 日期时间格式讲解
  13. 读书笔记-情感化设计
  14. java 数据库 事务 只读_Spring 事务 readOnly 到底是怎么回事?
  15. html语音对话,纯CSS对话框/对话气泡/语音泡沫/speech bubbles【27个示例】
  16. 多端开发之uniapp开发app
  17. 产生分类中的双月问题的数据集
  18. 2015062001 - 诸葛亮
  19. 基于微信视频直播如何做收费直播(微信公众号直播)?
  20. 第4章【思考与练习2】数据文件high-speed rail.csv存放着世界各国高速铁路的情况。对世界各国高铁的数据进行绘图分析。使用Basemap绘制地图及使用Pyecharts绘制地图。

热门文章

  1. TOEFL听力——题型介绍
  2. 猫扑产品总监聊聊运营环节的6大硬伤
  3. MySQL之锁-行级锁
  4. linux说明管道的作用,Linux管道及重定向的用途是什么
  5. JS的EventSource实时接收服务端推送的数据
  6. 221027|多元正态分布假设检验
  7. google云 重置
  8. 027-Swing布局管理器(流布局,网格布局,边框布局)
  9. 戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能
  10. “苹果云”,云计算的未来