https://pintia.cn/problem-sets/994805260223102976/problems/994805260353126400

每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。

输入格式:

输入第一行给出一个正整数 N(≤),即考生人数。随后 N 行,每行按下列格式给出一个考生的信息:

准考证号 得分 学校

其中准考证号是由 6 个字符组成的字符串,其首字母表示考试的级别:B代表乙级,A代表甲级,T代表顶级;得分是 [0, 100] 区间内的整数;学校是由不超过 6 个英文字母组成的单位码(大小写无关)。注意:题目保证每个考生的准考证号是不同的。

输出格式:

首先在一行中输出单位个数。随后按以下格式非降序输出单位的排行榜:

排名 学校 加权总分 考生人数

其中排名是该单位的排名(从 1 开始);学校是全部按小写字母输出的单位码;加权总分定义为乙级总分/1.5 + 甲级总分 + 顶级总分*1.5的整数部分;考生人数是该属于单位的考生的总人数。

学校首先按加权总分排行。如有并列,则应对应相同的排名,并按考生人数升序输出。如果仍然并列,则按单位码的字典序输出。

输入样例:

10
A57908 85 Au
B57908 54 LanX
A37487 60 au
T28374 67 CMU
T32486 24 hypu
A66734 92 cmu
B76378 71 AU
A47780 45 lanx
A72809 100 pku
A03274 45 hypu

输出样例:

5
1 cmu 192 2
1 au 192 3
3 pku 100 1
4 hypu 81 2
4 lanx 81 2

代码:
#include <cstdio>
#include <string>
#include <map>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;map<string, int> s_n;
map<int, string> n_s;const int maxn = 1e5 + 10;
struct X {string name;int a[3];int g;int num;
}s[maxn];bool cmp(const X& a, const X& b) {if (a.g != b.g) return a.g > b.g;if (a.num != b.num) return a.num < b.num;return a.name < b.name;
}int main() {int n;scanf("%d", &n);int sz = 0;for (int i = 1; i <= n; i++) {string id;int x;string name;cin >> id >> x >> name;for (int j = 0; j < name.length(); j++) {if (name[j] >= 'A' && name[j] <= 'Z') {name[j] = name[j] - 'A' + 'a';}}int h = s_n[name];if (h == 0) {sz++;s_n[name] = sz;n_s[sz] = name;h = sz;}s[h].name = name;s[h].num++;int o;if (id[0] == 'A') o = 0;else if (id[0] == 'B') o = 1;else if (id[0] == 'T') o = 2;s[h].a[o] += x;}for (int i = 1; i <= sz; i ++) {s[i].g = (int)(1.0 * s[i].a[0] + 1.0 * s[i].a[1] / 1.5 + 1.0 * s[i].a[2] * 1.5);}sort(s + 1, s + sz + 1, cmp);printf("%d\n", sz);int rank = 1;for (int i = 1; i <= sz; i++) {if (s[i].g != s[i - 1].g) rank = i;cout << rank << " " << s[i].name << " " << s[i].g << " " << s[i].num << endl;}return 0;
}

  

转载于:https://www.cnblogs.com/zlrrrr/p/9445907.html

PAT 1085 PAT单位排行 (Microsoft_zzt)相关推荐

  1. PAT 1085 PAT单位排行(25)(映射、集合训练)

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

  2. PAT 1085. PAT单位排行 (25) - 乙级

    每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数N(<=105),即考生人数.随后N行,每行按下列格式给出一个考生的信 ...

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

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

  4. PAT A1141 PAT Ranking of Institutions ——昨夜西风凋碧树

    PAT A1141 PAT Ranking of Institutions 中间计算TWS时不能使用int,否则最后一个测试点不过.但是比较和输出又需要用int,在里面强转int也不给AC,无奈只好先 ...

  5. [PAT A1025]PAT Ranking

    [PAT A1025]PAT Ranking 题目描述 1025 PAT Ranking (25 分)Programming Ability Test (PAT) is organized by th ...

  6. 【置顶】【PAT】PAT甲级题目及分类总结(持续更新ing)

    在2019年3月底,我决定考浙大计院,经过一个月还算凑合的学习,痛定思痛,决定整理整理自己的博客. 粗略估计,大概一个月的时间里我AC了31道题,大概用时40个小时上下,毕竟还要把大部分时间花在笔试上 ...

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

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

  8. 1085 PAT单位排行 (25 分

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

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

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

最新文章

  1. nginx日记分割脚本
  2. go微服务框架-gomicro试用
  3. jQuery-对Select的操作集合
  4. gets与fgets,puts与fputs区别
  5. 统计学习方法第四章课后习题(转载+重新排版+自己解读)
  6. /dev/fb0入门练习
  7. 串口数据字节位的理解
  8. 10余万行C代码开源之后,我被震惊了。。。
  9. 拼题a答案c语言计算整数各位数字之和,这是小白刷的基础题,跪求大佬帮忙!!!题目:读入一个自然数n...
  10. 适配器模式之享元模式
  11. 虚拟服务器软件哪个好,虚拟机软件哪个好?热门虚拟机软件推荐
  12. 网络管理工具IP-Tools的使用
  13. snakeyaml生成yaml文件空值显示问题
  14. 小程序 微信小商店 获取商品列表
  15. 笔记本硬盘直接安装win7系统教程(不用U盘和PE)
  16. 用Python实现视频字符化(蔡徐坤唱跳Rap视频)
  17. 著名的php项目,PHP著名开源项目汇总
  18. 从瓶盖挑战事件看企业如何做好新闻事件营销?
  19. linux中mtd是什么目录,Linux mtd system
  20. Window7 如何分屏

热门文章

  1. Android 手机模拟 Mifare 卡的设计与实现
  2. 评价指标——精确度,召回率,真阳率,假阳率,P-R曲线,ROC曲线,AUC
  3. 第一篇:基于小米手机的,解锁教程教学
  4. 【MySQL】启动、数据库/数据表 创建/查看/删除
  5. 一种清淤机器人分拣识别系统的C/Python语言实现
  6. 网易秘密启动“D计划” 引爆新一轮电子邮箱大战
  7. flash media server播放实时视频流
  8. 【PowerDesigner】Powerbuilder 11.5破解方法
  9. 【Dart 教程系列第 28 篇】Dart中的 Map 和实体类的相互转换
  10. python 求图像SNR代码