PAT 1085 PAT单位排行 (Microsoft_zzt)
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;
}
PAT 1085 PAT单位排行 (Microsoft_zzt)的更多相关文章
- PAT 1085 PAT单位排行(25)(映射、集合训练)
1085 PAT单位排行(25 分) 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤105),即考生人数.随 ...
- PAT 1085 PAT单位排行
每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤10^5),即考生人数.随后 N 行,每行按下列格式给出一个考生的信 ...
- PAT(B) 1085 PAT单位排行(Java:20分)
题目链接:1085 PAT单位排行 (25 point(s)) 题目描述 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式 输入第一行给出一个正整数 N ...
- 1085. PAT单位排行 (25)
每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数N(<=105),即考生人数.随后N行,每行按下列格式给出一个考生的信 ...
- P1085 PAT单位排行
转跳点:
- PAT 1085 Perfect Sequence
PAT 1085 Perfect Sequence 题目: Given a sequence of positive integers and another positive integer p. ...
- PAT A1141 PAT Ranking of Institutions (25 分)——排序,结构体初始化
After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...
- [PAT] 1141 PAT Ranking of Institutions(25 分)
After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...
- PAT 1141 PAT Ranking of Institutions
After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...
随机推荐
- wechall MySQL Authentication Bypass II
首先看看源码 username password分开来验证.但是没做过滤 通常的利用方法是使用union构造已知MD5值的查询. 如果username存在则执行查询,并且为admin.我们用unnio ...
- GO富集分析柱状图
target_gene_id <- unique(read.delim("miRNA-gene interactions.txt")$EntrezID) # BiocInst ...
- 20155220 2016-2017-2《Java程序设计》课程总结
20155220 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:师生关系 预备作业2:优秀技能经验 预备作业3:虚拟机linux初接触 第一周学习总结: ...
- 20155230 实验三《敏捷开发与XP实践》实验报告
20155230 实验三<敏捷开发与XP实践>实验报告 一.使用工具(Code->Reformate Code)把代码重新格式化 IDEA里的Code菜单有很多实用的功能可以帮助我们 ...
- 学号20155311 2016-2017-2 《Java程序设计》第一次实验报告
课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 完成实验. ...
- 20155322 2016-2017-2 《Java程序设计》第10周学习总结
20155322 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 第10周学习的主要内容Java和Android开发学习指南(第二版)(EPUBIT,Jav ...
- day5 二值化
1.otsu二值化 # coding=utf-8 import cv2 import numpy as np from matplotlib import pyplot as plt #1.读入图像 ...
- 【LG2183】[国家集训队]礼物
[LG2183][国家集训队]礼物 题面 洛谷 题解 插曲:不知道为什么,一看到这个题目,我就想到了这个人... 如果不是有\(exLucas\),这题就是\(sb\)题... 首先,若\(\sum_ ...
- 三、利用EnterpriseFrameWork快速开发Winform系统(C/S)
EnterpriseFrameWork框架实例源代码下载: 实例下载 上一章讲解了开发Web系统的详细步骤,以书籍的管理作实例实现对书籍的增.删.改.查功能,本章接着上面的实例继续补充用Winform ...
- 用php实现简单的自制计算器
存档: <!DOCTYPE html> <html> <head> <title>PHP实现计算器</title> </head> ...