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))的更多相关文章

  1. A1012 The Best Rank (25)(25 分)

    A1012 The Best Rank (25)(25 分) To evaluate the performance of our first year CS majored students, we ...

  2. A1075 PAT Judge (25)(25 分)

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

  3. A1025 PAT Ranking (25)(25 分)

    A1025 PAT Ranking (25)(25 分) Programming Ability Test (PAT) is organized by the College of Computer ...

  4. MySQL5.7.25(解压版)Windows下详细的安装过程

    大家好,我是浅墨竹染,以下是MySQL5.7.25(解压版)Windows下详细的安装过程 1.首先下载MySQL 推荐去官网上下载MySQL,如果不想找,那么下面就是: Windows32位地址:点 ...

  5. 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 ...

  6. 【PAT】1020 Tree Traversals (25)(25 分)

    1020 Tree Traversals (25)(25 分) Suppose that all the keys in a binary tree are distinct positive int ...

  7. 【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 ...

  8. 【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 ...

  9. 【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 ...

  10. 【PAT】1015 德才论 (25)(25 分)

    1015 德才论 (25)(25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得 ...

随机推荐

  1. SQL查找数据库中所有没有主键的数据表脚本

    --SQL查找数据库中所有没有主键的数据表脚本 --运行脚本后在消息中可能会显示下面现象中的一种:--(1)数据库中所有数据表都有主键(则证明所有数据表都有主键)--(2)当前数据表[数据表名]没有主 ...

  2. cmake设置默认静态链接库

    在使用cmake来编写CMakeLists.txt时,如果不特别指明,那么cmake是默认动态链接库的,最终生成的二进制文件只能在与本地相同环境下的机器运行,如果想把生成的二进制拷贝到其他机器上执行, ...

  3. Sicily 1211. 商人的宣传

    题目链接:http://soj.me/1211 Description Bruce是K国的商人,他在A州成立了自己的公司,这次他的公司生产出了一批性能很好的产品,准备宣传活动开始后的第L天到达B州进行 ...

  4. 脚本病毒分析扫描专题2-Powershell代码阅读扫盲

    4.2.PowerShell 为了保障木马样本的体积很小利于传播.攻击者会借助宏->WMI->Powershell的方式下载可执行文件恶意代码.最近也经常会遇见利用Powershell通过 ...

  5. npm 安装 electron 超时

    由于某些不可描述的原因,俺的某个小项目要用客户端桌面应用,后台那还是 php 了.经广大的群友指导,发现了 Electron 这个项目.它可以用 html, css, javascript 构建跨平台 ...

  6. C#基础之静态和非静态的区别

    1.在非静态即可有非静态成员又可以有静态成员 2非静态调用创建类的对象.方法名,静态成员直接引用对象名

  7. json在线工具

    1.json在线格式化工具 http://www.choujone.com/json/ 2.json在线比较工具 http://tlrobinson.net/projects/javascript-f ...

  8. JS中精选this关键字的指向规律你记住了吗

      1.首先要明确:           谁最终调用函数,this指向谁           this指向的永远只可能是对象!!!!!          this指向谁永远不取决于this写在哪,而取 ...

  9. 插入标识列identity_insert

    插入标识列identity_insert 在进行数据插入时,如果插入列名包括标识列,常常会遇到以下3种提示: 一.“当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'xxxxxxxx ...

  10. 一键开关VS的release模式优化

    因为我们公司的项目规模非常大了,如果日常调试使用debug模式的话,每次调试启动都要非常长的时间,因此大多数人使用release关优化的方式来进行日常开发.但是因为持续集成的存在,上传的代码要求是开启 ...