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. 微信小程序开发教程(七)逻辑层——.js详解

    逻辑层,是事务逻辑处理的地方.对于小程序而言,逻辑层就是.js脚本文件的集合.逻辑层将数据进行处理后发送给视图层,同时接收视图层的事件反馈. 微信小程序开发框架的逻辑层是由JavaScript编写.在 ...

  2. Python概念-定制自己的数据类型(包装)

    包装:python为大家提供了标准数据类型,以及丰富的内置方法,其实在很多场景下我们都需要基于标准数据类型来定制我们自己的数据类型,新增/改写方法,这就用到了我们刚学的继承/派生知识(其他的标准类型均 ...

  3. Python概念-Attr系列(林海峰教的)

    这个Attr系列是egon老师自创的,个人还是可以接受这种文化底蕴的,所以直接拿来用,也是毫无违和感的 所谓Attr系列,其实是__setattr__,__delattr__,__getattr__ ...

  4. Python练习-不知道弄个什么鬼

    Alex大神,今天丢过来一个PDF,结果就成了这个样子! 1.  执行 Python 脚本的两种方式 交互方式:                   命令行 文件方式:                 ...

  5. 【译】第十篇 Integration Services:高级事件行为

    本篇文章是Integration Services系列的第十篇,详细内容请参考原文. 简介在前一篇, we introduced fault tolerance by examining method ...

  6. 洛谷 P4559: bzoj 5319: [JSOI2018]军训列队

    题目传送门:洛谷 P4559. 题意简述: 有 \(n\) 个学生,编号为 \(i\) 的学生有一个位置 \(a_i\). 有 \(m\) 个询问,每次询问编号在 \([l,r]\) 区间内的学生跑到 ...

  7. linux arm的存储分布那些事之一【转】

    转自:http://blog.csdn.net/xiaojsj111/article/details/11724081 linux arm的存储分布那些事之一 linux arm 内存分布总览 上图是 ...

  8. CentOS7 修改网卡名称

    vi /etc/sysconfig/grub 增加net.ifnames=0 biosdevname=0 执行:grub2-mkconfig -o /boot/grub2/grub.cfg

  9. 栈应用之 括号匹配问题(Python 版)

    栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...

  10. Extjs6设置Store、Ajax、form的请求方式(GET、POST)

    Extjs6 设置Store.Ajax.form的请求方式(GET.POST) Ajax请求和Form的submit方法设置请求方式和原来一样,使用method : 'POST'设置 // 表单提交 ...