https://pintia.cn/problem-sets/994805342720868352/problems/994805344222429184

After each PAT, the PAT Center will announce the ranking of institutions based on their students' performances. Now you are asked to generate the ranklist.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤), which is the number of testees. Then N lines follow, each gives the information of a testee in the following format:

ID Score School

where ID is a string of 6 characters with the first one representing the test level: B stands for the basic level, A the advanced level and T the top level; Scoreis an integer in [0, 100]; and School is the institution code which is a string of no more than 6 English letters (case insensitive). Note: it is guaranteed that ID is unique for each testee.

Output Specification:

For each case, first print in a line the total number of institutions. Then output the ranklist of institutions in nondecreasing order of their ranks in the following format:

Rank School TWS Ns

where Rank is the rank (start from 1) of the institution; School is the institution code (all in lower case); ; TWS is the total weighted score which is defined to be the integer part of ScoreB/1.5 + ScoreA + ScoreT*1.5, where ScoreX is the total score of the testees belong to this institution on level X; and Ns is the total number of testees who belong to this institution.

The institutions are ranked according to their TWS. If there is a tie, the institutions are supposed to have the same rank, and they shall be printed in ascending order of Ns. If there is still a tie, they shall be printed in alphabetical order of their codes.

Sample Input:

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

Sample Output:

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

代码:

#include <bits/stdc++.h>
using namespace std; const int maxn = 1e5 + 10;
int N;
map<string, int> mp; string lowercase(string c) {
string ans = "";
int len = c.length();
for(int i = 0; i < len; i ++) {
if(c[i] >= 'A' && c[i] <= 'Z')
ans += (c[i] + 32);
else ans += c[i];
}
return ans;
} struct Node{
int st;
int num;
double score = 0;
string name;
}node[maxn]; bool cmp(const Node &a, const Node &b) {
if((int)a.score != (int)b.score)
return (int)a.score > (int)b.score;
else if((int)a.score == (int)b.score) {
if(a.num != b.num)
return a.num < b.num;
else return a.name < b.name;
}
} int main() {
scanf("%d", &N);
mp.clear();
int cnt = 0;
while(N --) {
char s[10]; int x; string namee;
scanf("%s%d", s, &x);
cin >> namee; namee = lowercase(namee);
if(mp[namee] == 0) {
cnt ++;
mp[namee] = cnt;
} node[mp[namee]].num ++;
node[mp[namee]].name = namee;
if(s[0] == 'B') node[mp[namee]].score += (2.0 * x / 3);
else if(s[0] == 'A') node[mp[namee]].score += 1.0 * x;
else if(s[0] == 'T') node[mp[namee]].score += (3.0 * x / 2);
} sort(node + 1, node + 1 + cnt, cmp); cout << cnt << endl; node[1].st = 1;
cout << node[1].st << " " << node[1].name << " " << (int)node[1].score << " " << node[1].num << endl;
for(int i = 2; i <= cnt; i ++) {
if((int)node[i].score == (int)node[i - 1].score)
node[i].st = node[i - 1].st;
else node[i].st = i; cout << node[i].st << " " << node[i].name << " " << (int)node[i].score << " " << node[i].num << endl;
}
return 0;
}

  第一次交最后一个测试点没过 要用 double 算 score 然后强制类型转换 (int)

FHFHFH

PAT 甲级 1141 PAT Ranking of Institutions的更多相关文章

  1. PAT甲级1141 Ranking of Institutions

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805344222429184 题意: 给定几个学生的PAT分数和学校 ...

  2. PAT 甲级 1025 PAT Ranking

    1025. PAT Ranking (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Programmi ...

  3. PAT甲级——1025 PAT Ranking

    1025 PAT Ranking Programming Ability Test (PAT) is organized by the College of Computer Science and ...

  4. PAT 甲级 1025.PAT Ranking C++/Java

      Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Z ...

  5. PAT 甲级1025 PAT Ranking (25 分)(结构体排序,第一次超时了,一次sort即可小技巧优化)

    题意: 给定一次PAT测试的成绩,要求输出考生的编号,总排名,考场编号以及考场排名. 分析: 题意很简单嘛,一开始上来就,一组组输入,一组组排序并记录组内排名,然后再来个总排序并算总排名,结果发现最后 ...

  6. PAT甲级——A1025 PAT Ranking

    Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhe ...

  7. PAT甲级1075 PAT Judge

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805393241260032 题意: 有m次OJ提交记录,总共有k道 ...

  8. PAT 甲级 1075 PAT Judge (25分)(较简单,注意细节)

    1075 PAT Judge (25分)   The ranklist of PAT is generated from the status list, which shows the scores ...

  9. PAT甲级——A1075 PAT Judge

    The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...

随机推荐

  1. VB6 加载水晶报表例子

    VB6 加载水晶报表例子 先按照水晶报表组件 Crystal Reports,Business Objects,现已被SAP收购. 再添加引用 'Library: CRAXDRT 'C:\Progra ...

  2. JavaEE笔记(四)

    sql的完整顺序完整的sql语句,由6个子句组成1. from2. where3. group by4. select5. having6. order by # having 和 where的区别w ...

  3. 对Oracle的游标进行更为精细的控制

    摘要自 Oracle性能控制艺术 DECLARE l_ename emp.ename%TYPE :='SCOTT'; l_empno emp.empno%TYPE; l_cursor INTEGER; ...

  4. 如何查看PostgreSQL的checkpoint 活动

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL基础知识与基本操作索引页    回到顶级页面:PostgreSQL索引页 作者:高健@博客园 luckyjackgao@g ...

  5. 【转】numpy教程

    [转载说明] 本来没有必要转载的,只是网上的版本排版不是太好,看的不舒服.所以转过来,重新排版,便于自己查看. 基础篇 NumPy的主要对象是同种元素的多维数组. 这是一个所有的元素都是一种类型.通过 ...

  6. 洛咕 P4304 [TJOI2013]攻击装置

    把坐标按照(x+y)%2染色可以发现这是个二分图 二分图最大独立集=点数-最大匹配 于是就是个算匹配的傻逼题了 // luogu-judger-enable-o2 #include<bits/s ...

  7. JAVA 调用gc机制强制删除文件

    在删除文件前调用System.gc()方法,也就是垃圾回收机制,即可成功删除被JAVA虚拟机占用的文件.

  8. linux日志分割、去重、统计

    一.实例 单条日志模板: 2018-11-08 02:17:22 [Iceberg]process params:IcebergOfferServiceImpl.Params(pk=BF06NA2YE ...

  9. 菜鸟vimer成长记——第4.1章、通用插件

    简介 关于插件的分类,此系列只会简单的区分为通用插件和编程插件.通用插件的意思是,不基于任何编程语言都可以使用的插件.编程插件,是针对于编程习惯,或者说是针对于某种语言的插件. 计划中,是先把基本常用 ...

  10. 程序员 vs HR(皮这么一下很开心)

    最近网络上一段 HR VS 程序员 的表情包火了 来来来 我们近距离感受下 来源|网络:http://t.cn/RuTKC8B 哈哈哈!大家可以留言说说你们面试时候的趣事 更多内容关注公众号:51re ...