1012 The Best Rank (25)(25 point(s))
problem
To evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C - C Programming Language, M - Mathematics (Calculus or Linear Algebra), and E - English. At the mean time, we encourage students by emphasizing on their best ranks -- that is, among the four ranks with respect to the three courses and the average grade, we print the best rank for each student.
For example, The grades of C, M, E and A - Average of 4 students are given as the following:
StudentID C M E A
310101 98 85 88 90
310102 70 95 88 84
310103 82 87 94 88
310104 91 91 91 91
Then the best ranks for all the students are No.1 since the 1st one has done the best in C Programming Language, while the 2nd one in Mathematics, the 3rd one in English, and the last one in average.
Input
Each input file contains one test case. Each case starts with a line containing 2 numbers N and M (<=2000), which are the total number of students, and the number of students who would check their ranks, respectively. Then N lines follow, each contains a student ID which is a string of 6 digits, followed by the three integer grades (in the range of [0, 100]) of that student in the order of C, M and E. Then there are M lines, each containing a student ID.
Output
For each of the M students, print in one line the best rank for him/her, and the symbol of the corresponding rank, separated by a space.
The priorities of the ranking methods are ordered as A > C > M > E. Hence if there are two or more ways for a student to obtain the same best rank, output the one with the highest priority.
If a student is not on the grading list, simply output "N/A".
Sample Input
5 6
310101 98 85 88
310102 70 95 88
310103 82 87 94
310104 91 91 91
310105 85 90 90
310101
310102
310103
310104
310105
999999
Sample Output
1 C
1 M
1 E
1 A
3 A
N/A
tips
answer
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define Max 2001
int N, M;
void NA(){cout<<"N/A"<<endl;}
typedef struct {
string ID;
int C,M,E;
float A;
int Bc, Bm, Be, Ba;
}St;
St st[Max];
set<string> id;
bool CompC(St a, St b){
return a.C > b.C;
}
bool CompM(St a, St b){
return a.M > b.M;
}
bool CompE(St a, St b){
return a.E > b.E;
}
bool CompA(St a, St b){
return a.A > b.A;
}
char GetMin(St a){
int Min = min(min(min(a.Bc, a.Bm), a.Be), a.Ba);
if (Min == a.Ba) return 'A';
if (Min == a.Bc) return 'C';
if (Min == a.Bm) return 'M';
if (Min == a.Be) return 'E';
}
void PrintStatus(){
for(int i = 0; i < N; i++){
cout<<i<<" "<<st[i].C<<" "<<st[i].M<<" "<<st[i].E<<" "<<st[i].A<<" "<<endl;
}
}
int main(){
// freopen("test.txt", "r", stdin);
cin>>N>>M;
for(int i = 0; i < N; i++) {
cin>>st[i].ID>>st[i].C>>st[i].M>>st[i].E;
st[i].A = (float)(st[i].C + st[i].M + st[i].E)/3.0;
id.insert(st[i].ID);
}
// C
sort(st, st+N, CompC);
for(int i = 0; i < N; i++){
if(i > 0 && st[i].C == st[i-1].C ) st[i].Bc = st[i-1].Bc;
else st[i].Bc = i+1;
}
// PrintStatus();
// M
sort(st, st+N, CompM);
for(int i = 0; i < N; i++){
if(i > 0 && st[i].M == st[i-1].M ) st[i].Bm = st[i-1].Bm;
else st[i].Bm = i+1;
}
// PrintStatus();
// E
sort(st, st+N, CompE);
for(int i = 0; i < N; i++){
if(i > 0 && st[i].E == st[i-1].E ) st[i].Be = st[i-1].Be;
else st[i].Be = i+1;
}
// PrintStatus();
// A
sort(st, st+N, CompA);
for(int i = 0; i < N; i++){
if(i > 0 && st[i].A == st[i-1].A ) st[i].Ba = st[i-1].Ba;
else st[i].Ba = i+1;
}
// PrintStatus();
for(int i = 0; i < M; i++){
string temp;
cin>>temp;
if(id.find(temp) == id.end()) NA();
else{
for(int i = 0; i < N; i++){
if(temp == st[i].ID) {
// cout<<temp<<" "<<min(min(st[i].Bc, st[i].Bm), st[i].Be)<<endl;
cout<< min(min(min(st[i].Bc, st[i].Bm), st[i].Be), st[i].Ba) <<" "<<GetMin(st[i])<<endl;
}
}
}
}
return 0;
}
/*
5 6
310101 98 85 88
310102 70 95 88
310103 82 87 94
310104 91 91 91
310105 85 90 90
310101
310102
310103
310104
310105
999999
*/
/*
1 C
1 M
1 E
1 A
3 A
N/A
*/
experience
- 注意并列的情况
1012 The Best Rank (25)(25 point(s))的更多相关文章
- A1012 The Best Rank (25)(25 分)
A1012 The Best Rank (25)(25 分) To evaluate the performance of our first year CS majored students, we ...
- A1075 PAT Judge (25)(25 分)
A1075 PAT Judge (25)(25 分) The ranklist of PAT is generated from the status list, which shows the sc ...
- A1025 PAT Ranking (25)(25 分)
A1025 PAT Ranking (25)(25 分) Programming Ability Test (PAT) is organized by the College of Computer ...
- MySQL5.7.25(解压版)Windows下详细的安装过程
大家好,我是浅墨竹染,以下是MySQL5.7.25(解压版)Windows下详细的安装过程 1.首先下载MySQL 推荐去官网上下载MySQL,如果不想找,那么下面就是: Windows32位地址:点 ...
- PAT 甲级 1006 Sign In and Sign Out (25)(25 分)
1006 Sign In and Sign Out (25)(25 分) At the beginning of every day, the first person who signs in th ...
- 【PAT】1020 Tree Traversals (25)(25 分)
1020 Tree Traversals (25)(25 分) Suppose that all the keys in a binary tree are distinct positive int ...
- 【PAT】1052 Linked List Sorting (25)(25 分)
1052 Linked List Sorting (25)(25 分) A linked list consists of a series of structures, which are not ...
- 【PAT】1060 Are They Equal (25)(25 分)
1060 Are They Equal (25)(25 分) If a machine can save only 3 significant digits, the float numbers 12 ...
- 【PAT】1032 Sharing (25)(25 分)
1032 Sharing (25)(25 分) To store English words, one method is to use linked lists and store a word l ...
- 【PAT】1015 德才论 (25)(25 分)
1015 德才论 (25)(25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得 ...
随机推荐
- 20155307 2016-2017-2 《Java程序设计》第5周学习总结
20155307 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 这两章主要讲的是如何处理程序中的异常情况,对于错误,java会将其打包成对象,可以用&quo ...
- Macaca(一) - 环境配置
Macaca是阿里提供的一套自动化测试框架,目前已开源. 花了两三个小时研究了一下Macaca的实现原理.因为很好奇它与appium.selenium有啥区别. 实现原理本质上与selenium的we ...
- Linux/Unix系统编程手册 第一章:历史和标准
Unix的开发不受控于某一个厂商或者组织,是由诸多商业和非商业团体共同贡献进行演化的.这导致两个结果:一是Unix集多种特性于一身,二是由于参与者众多,随着时间推移,Unix实现方式逐渐趋于分裂. 由 ...
- HTTP::Request 用 add-content 添加 POST参数
sub MAIN($cmd) { use HTTP::UserAgent; my $r = HTTP::Request.new(); $r.uri: 'http://localhost/a.php'; ...
- npm 安装 electron 超时
由于某些不可描述的原因,俺的某个小项目要用客户端桌面应用,后台那还是 php 了.经广大的群友指导,发现了 Electron 这个项目.它可以用 html, css, javascript 构建跨平台 ...
- aarch64_g3
glibc-langpack-wal-2.25-6.fc26.aarch64.rpm 2017-06-20 17:08 210K fedora Mirroring Project glibc-lang ...
- log4j与commons-logging slf4j的关系
1. slf4j 他只提供一个核心slf4j api(就是slf4j-api.jar包),这个包只有日志的接口并没有实现 所以如果要使用就得再给它提供一个实现了些接口的日志包, ...
- Nginx - 压缩模块
1. 前言 在 Nginx 中与网页压缩相关的模块有两个:一个是 HttpGzipModule,另一个是 HttpGzipStaticModule.前者用于启用在文件传输过程中使用 gzip 压缩,而 ...
- KVM创建虚拟机
一.复制现有img备份 1.ssh登陆宿主机 我的在 192.168.0.302.复制img 我的虚拟机img文件在 /home/images 我的img模板文件在 /home/tools/kvm/i ...
- php内存管理机制与垃圾回收机制
PHP内存管理机制 1 var_dump(memory_get_usage()); //获取内存 2 $a = "laruence"; //定义一个变量 3 var_dump(me ...