1085 PAT单位排行 (25 分

每次 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<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;struct School{string name;double grade ;int stuNum;
};bool cmp(School a,School b){if(a.grade != b.grade) return a.grade > b.grade;else if(a.stuNum != b.stuNum)return a.stuNum < b.stuNum;else return a.name < b.name;
}int main(){int n,cnt = 1;vector<School> ans,sch;map<string,int> idx;cin >> n;string stu,school;double score;for(int i = 0; i < n; i++){getchar();cin >> stu >> score >> school;for(int j = 0; j < school.size(); j++){if(school[j] >= 'A' && school[j] <= 'Z')school[j] = (school[j] - 'A' + 'a');}if(idx.count(school) == 0){idx[school] = cnt++;School q;q.name = school;q.grade = 0;q.stuNum = 0;sch.push_back(q);}if(stu[0] == 'B') score /= 1.5;if(stu[0] == 'T') score *= 1.5;sch[idx[school] - 1].grade += score;sch[idx[school] - 1].stuNum++;}for(int i = 0; i < sch.size(); i++){sch[i].grade = (int)sch[i].grade;}sort(sch.begin(),sch.end(),cmp);int rank = 1;cout << sch.size() << endl;cout << rank << " "<< sch[0].name << " " << sch[0].grade << " " << sch[0].stuNum << endl;for(int i = 1; i < sch.size(); i++){if(sch[i].grade != sch[i - 1].grade) rank = i + 1;cout << rank << " " << sch[i].name << " "<< sch[i].grade << " "<< sch[i].stuNum << endl;}return 0;
}

 

转载于:https://www.cnblogs.com/wanghao-boke/p/10427713.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

23. 合并K个排序链表

合并 k 个排序链表&#xff0c;返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 解法&#xff1a; class Solution { public:ListNode* mergeKLists(vect…

1086 就不告诉你 (15 分)

做作业的时候&#xff0c;邻座的小盆友问你&#xff1a;“五乘以七等于多少&#xff1f;”你应该不失礼貌地围笑着告诉他&#xff1a;“五十三。”本题就要求你&#xff0c;对任何一对给定的正整数&#xff0c;倒着输出它们的乘积。 输入格式&#xff1a; 输入在第一行给出两个…

学习链接

序号链接1Forz Blog [点击链接]2arkingc/note [点击链接] linw7/Skill-Tree [点击链接] chenshuaihao/NetServer [点击链接]

1087 有多少不同的值 (20 分)

当自然数 n 依次取 1、2、3、……、N 时&#xff0c;算式 ⌊ 有多少个不同的值&#xff1f;&#xff08;注&#xff1a;⌊ 为取整函数&#xff0c;表示不超过 x 的最大自然数&#xff0c;即 x 的整数部分。&#xff09; 输入格式&#xff1a; 输入给出一个正整数 N&#xff08;…

1088 三人行 (20 分)

子曰&#xff1a;“三人行&#xff0c;必有我师焉。择其善者而从之&#xff0c;其不善者而改之。” 本题给定甲、乙、丙三个人的能力值关系为&#xff1a;甲的能力值确定是 2 位正整数&#xff1b;把甲的能力值的 2 个数字调换位置就是乙的能力值&#xff1b;甲乙两人能力差是丙…

1089 狼人杀-简单版 (20 分)

以下文字摘自《灵机一动好玩的数学》&#xff1a;“狼人杀”游戏分为狼人、好人两大阵营。在一局“狼人杀”游戏中&#xff0c;1 号玩家说&#xff1a;“2 号是狼人”&#xff0c;2 号玩家说&#xff1a;“3 号是好人”&#xff0c;3 号玩家说&#xff1a;“4 号是狼人”&#…

1090 危险品装箱 (25 分)

集装箱运输货物时&#xff0c;我们必须特别小心&#xff0c;不能把不相容的货物装在一只箱子里。比如氧化剂绝对不能跟易燃液体同箱&#xff0c;否则很容易造成爆炸。 本题给定一张不相容物品的清单&#xff0c;需要你检查每一张集装箱货品清单&#xff0c;判断它们是否能装在同…

C++标准库之String

C中支持的字符串处理的函数库叫String&#xff0c;但它不是STL&#xff0c;却与STL操作十分相似。 1.声明&#xff1a; 使用String之前要有以下头文件 #include<string> using namespace std; 声明方法 string s; //声明一个string对象 s string s[10]; //声明一个stri…

652. 寻找重复的子树

给定一棵二叉树&#xff0c;返回所有重复的子树。对于同一类的重复子树&#xff0c;你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 示例 1&#xff1a; 1 / \ 2 3 / / \ 4 2 4 / 4 …

817. 链表组件

给定一个链表&#xff08;链表结点包含一个整型值&#xff09;的头结点 head。 同时给定列表 G&#xff0c;该列表是上述链表中整型值的一个子集。 返回列表 G 中组件的个数&#xff0c;这里对组件的定义为&#xff1a;链表中一段最长连续结点的值&#xff08;该值必须在列表 G…

1121 Damn Single (25 分)

"Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are supposed to find those who are alone in a big party, so they can be taken care of. Input Specification: Each input file contains one test case. For each case,…

1124 Raffle for Weibo Followers (20 分)

John got a full mark on PAT. He was so happy that he decided to hold a raffle&#xff08;抽奖&#xff09; for his followers on Weibo -- that is, he would select winners from every N followers who forwarded his post, and give away gifts. Now you are suppose…

987. 二叉树的垂序遍历

给定二叉树&#xff0c;按垂序遍历返回其结点值。 对位于 (X, Y) 的每个结点而言&#xff0c;其左右子结点分别位于 (X-1, Y-1) 和 (X1, Y-1)。 把一条垂线从 X -infinity 移动到 X infinity &#xff0c;每当该垂线与结点接触时&#xff0c;我们按从上到下的顺序报告结点的值…

28. 实现 strStr()

实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串&#xff0c;在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在&#xff0c;则返回 -1。 示例 1: 输入: haystack "hello", needle "ll" 输出: 2 示例…

1136 A Delayed Palindrome (20 分)

Consider a positive integer N written in standard notation with k1 digits a​i​​ as a​k​​⋯a​1​​a​0​​ with 0 for all i and a​k​​>0. Then N is palindromic if and only if a​i​​a​k−i​​ for all i. Zero is written 0 and is also palindrom…

1044 火星数字 (20 分)

火星人是以 13 进制计数的&#xff1a; 地球人的 0 被火星人称为 tret。地球人数字 1 到 12 的火星文分别为&#xff1a;jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。火星人将进位以后的 12 个高位数字分别称为&#xff1a;tam, hel, maa, huh, tou, kes, he…

43. 字符串相乘

给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 示例 1: 输入: num1 "2", num2 "3" 输出: "6" 示例 2: 输入: num1 "123", num2 "456&qu…

1045 快速排序 (25 分)

著名的快速排序算法里有一个经典的划分过程&#xff1a;我们通常采用某种方法取一个元素作为主元&#xff0c;通过交换&#xff0c;把比主元小的元素放到它的左边&#xff0c;比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列&#xff0c;请问有多少个元…

1049 数列的片段和 (20 分)

给定一个正数数列&#xff0c;我们可以从中截取任意的连续的几个数&#xff0c;称为片段。例如&#xff0c;给定数列 { 0.1, 0.2, 0.3, 0.4 }&#xff0c;我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0…