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 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得 ...
随机推荐
- select 函数小结 -- 转自百度知道
http://zhidao.baidu.com/link?url=UVTXeK4ncKmnwatGUW2deMFylNYBuur-zHmK3w53NXNRpgPbhld2WdkMD766nKl_6Hj ...
- Linux dig命令
dig(Domain Information Groper),和nslookup作用有些类似,都是DNS查询工具 1.dig命令格式 dig @dnsserver name querytype 如果你 ...
- IE的双边距Bug以及解决办法
display:inline和display:block区别 一.什么是双边距Bug? 先来看图: 我们要让绿色盒模型在蓝色盒模型之内向左浮动,并且距蓝色盒模型左侧100像素.这个例子很常见,比如在网 ...
- Memcached服务器UDP反射放大攻击
1.前言 2月28日,Memcache服务器被曝出存在UDP反射放大攻击漏洞.攻击者可利用这个漏洞来发起大规模的DDoS攻击,从而影响网络正常运行.漏洞的形成原因为Memcache 服务器UDP 协议 ...
- vim加密文件
一.加密文件内容 vim gt-1.sh 输入:X 注意是大写的X 输入密码 然后,保存 再次访问,需要输入密码 如果输入密码错误,内容显示为乱码 用cat或more查看文件内容,显示为乱码:用vi重 ...
- c# CTS 基础数据类型笔记
C#中的基础数据类型并没有内置于c#语言中,而内置于.net freamework. C#有15个预定义类型,其中13个是值类型,两个是引用类型(string和object) 一.值类型 值类型 数据 ...
- yum怎么用?
一.yum 简介 yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器.起初是由yellow dog 这一发行版的 ...
- J2V8 For Android
J2V8是基于Google的JavaScript引擎V8的Java开源项目,实现Java和JavaScript的相互调用.并对Android平台提供支持,最新版本提供了aar格式的类库包方便Andro ...
- python基础-各模块文章导航
python基础学习日志day5-各模块文章导航 python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html p ...
- Python版飞机大战
前面学了java用java写了飞机大战这次学完python基础后写了个python版的飞机大战,有兴趣的可以看下. 父类是飞行物类是所有对象的父类,setting里面是需要加载的图片,你可以换称自己的 ...