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 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得 ...
随机推荐
- 【转】.NET+AE开发中常见几种非托管对象的释放
尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 今天在开发时遇到一个问题:" 未处理 System.AccessViolationException Message="尝试 ...
- Hive笔记之collect_list/collect_set(列转行)
Hive中collect相关的函数有collect_list和collect_set. 它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重. 做 ...
- python作业模拟计算器开发(第五周)
作业需求: 模拟计算器开发: 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/1 ...
- 2016.6.21——Climbing Stairs
Climbing Stairs 本题收获: 1.斐波那契函数f(n) = f(n-1) + f(n -2) 题目: You are climbing a stair case. It takes n ...
- 【Tomcat】Tomcat容器 web.xml详解
Tomcat的安装目录下的conf目录下的web.xml文件有许多配置,例如: <init-param> <param-name>debug</param-name& ...
- 存储过程简单Demo
--创建存储过程 delimiter // create procedure p1() begin end // --调用存储过程 call p1(); --删除存储过程 drop procedure ...
- codepage 和 charset
codepage:简单地说,这是程序用于对字符进行编码的一个表.代码页是服务器的事情. 常见的三种codepage 简体中文 : 936 繁体中文 : 950 UTF-8 : 65001 如果你不想用 ...
- AopProxyUtils.getSingletonTarget(Ljava/lang/Object;)Ljava/lang/Object;大坑
这个问题太坑了,试了好多个版本,都是依赖冲突导致的, https://blog.csdn.net/qq_15003505/article/details/78430595 最后找到这一篇博客解决了,就 ...
- linux下C获取系统时间的方法
asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime,localtime 表头文件 #include 定义函数 char * asctime(const ...
- 一步一步搭建oracle 11gR2 rac+dg之共享磁盘设置(三)【转】
一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之共享磁盘准备 (三) 注意:这一步是配置rac的过程中非常重要的一步,很多童鞋 ...