PAT-1012 The Best Rank (25 分) 查询分数对应排名(包括并列)
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 Algrbra), 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 Specification:
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 Specification:
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
题目大意:找出每个学生排名最高的科目,如果排名相同那么就A>C>M>E
思路分析:预处理一个排名查询表,输入分数即可查出排名
#include<bits/stdc++.h>
#define de(x) cout<<#x<<" "<<(x)<<endl
#define each(a,b,c) for(int a=b;a<=c;a++)
using namespace std;
const int maxn=2000+5;
const int inf=0x3f3f3f3f;
int avg[maxn];
int c[maxn];
int math[maxn];
int english[maxn];
int avg_table[105];
int c_table[105];
int math_table[105];
int english_table[105];
struct student
{
int c;
int m;
int e;
int a;
};
map<string,student>M;
int cmp(int a,int b)
{
return a>b;
}
/*
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
*/
int main()
{
int n,m;
cin>>n>>m;
string id;
each(i,1,n)
{
student temp;
cin>>id;
cin>>temp.c;
cin>>temp.m;
cin>>temp.e;
temp.a=(temp.c+temp.m+temp.e)/3;
c[i]=temp.c;
math[i]=temp.m;
english[i]=temp.e;
avg[i]=temp.a;
M[id]=temp;
}
sort(avg+1,avg+n+1,cmp);
for(int i=1;i<=n+1;i++)
{
int score=avg[i];
if(avg_table[score]==0)
{
avg_table[score]=i;
}
}
sort(math+1,math+n+1,cmp);
for(int i=1;i<=n+1;i++)
{
int score=math[i];
if(math_table[score]==0)
{
math_table[score]=i;
}
}
sort(c+1,c+n+1,cmp);
for(int i=1;i<=n+1;i++)
{
int score=c[i];
if(c_table[score]==0)
{
c_table[score]=i;
}
}
sort(english+1,english+n+1,cmp);
for(int i=1;i<=n+1;i++)
{
int score=english[i];
if(english_table[score]==0)
{
english_table[score]=i;
}
}
while(m--)
{
string query;
cin>>query;
if(M.count(query)==0)
{
cout<<"N/A"<<endl;
continue;
}
string ans1="E";
int ans2=english_table[M[query].e];
//de(ans2);
if(math_table[M[query].m]<=english_table[M[query].e])
{
ans1="M";
ans2=math_table[M[query].m];
}
if(c_table[M[query].c]<=ans2)
{
ans1="C";
ans2=c_table[M[query].c];
}
if(avg_table[M[query].a]<=ans2)
{
ans1="A";
ans2=avg_table[M[query].a];
}
cout<<ans2<<" "<<ans1<<endl;
}
}
PAT-1012 The Best Rank (25 分) 查询分数对应排名(包括并列)的更多相关文章
- 1012 The Best Rank (25分) vector与结构体排序
1012 The Best Rank (25分) To evaluate the performance of our first year CS majored students, we con ...
- PAT 甲级 1012 The Best Rank (25 分)(结构体排序)
题意: 为了评估我们第一年的CS专业学生的表现,我们只考虑他们的三个课程的成绩:C - C编程语言,M - 数学(微积分或线性代数)和E - 英语.同时,我们鼓励学生强调自己的最优秀队伍 - 也就是说 ...
- 【PAT甲级】1012 The Best Rank (25 分)
题意: 输入两个整数N,M(<=2000),接着分别输入N个学生的ID,C语言成绩,数学成绩和英语成绩. M次询问,每次输入学生ID,如果该ID不存在则输出N/A,存在则输出该学生排名最考前的一 ...
- 1012 The Best Rank (25 分)
To evaluate the performance of our first year CS majored students, we consider their grades of three ...
- PAT甲 1012. The Best Rank (25) 2016-09-09 23:09 28人阅读 评论(0) 收藏
1012. The Best Rank (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To eval ...
- [PAT] 1142 Maximal Clique(25 分)
1142 Maximal Clique(25 分) A clique is a subset of vertices of an undirected graph such that every tw ...
- PAT 1009 Product of Polynomials (25分) 指数做数组下标,系数做值
题目 This time, you are supposed to find A×B where A and B are two polynomials. Input Specification: E ...
- PAT A1122 Hamiltonian Cycle (25 分)——图遍历
The "Hamilton cycle problem" is to find a simple cycle that contains every vertex in a gra ...
- PAT A1142 Maximal Clique (25 分)——图
A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...
随机推荐
- ML_Review_GMM(Ch10)
Note sth about GMM(Gaussian Mixtrue Model) 高斯混合模型的终极理解 高斯混合模型(GMM)及其EM算法的理解 这两篇博客讲得挺好,同时讲解了如何解决GMM参数 ...
- 在IntelliJ IDEA中启动tomcat出现Can't load AMD 64-bit .dll on a IA 32-bit' platform问题详解
第一查看jdk版本 第二查看IntelliJ IDEA中运行tomcat的配置的jdk 比较两个jdk版本是否一致.或者查看tomcat是64还是32位的
- Hvie SQL 修改表名 注释 列名注释
一.修改hive表注释 ALTER TABLE 数据库名.表名 SET TBLPROPERTIES('comment' = '新的表备注'); 二.修改hive表字段注释 ALTER TABLE 数据 ...
- python arcgis
- 初识kaggle,以及记录 kaggle的使用
1.简介:Kaggle是一个数据建模和数据分析竞赛的平台.企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛,通过“众包”的形式以产生最好的模型.Kaggle可以分为Competit ...
- SpringBoot表单数据校验
Springboot中使用了Hibernate-validate作为默认表单数据校验框架 在实体类上的具体字段添加注解 public class User { @NotBlank private St ...
- hwclock和date源码分析
一. hwclock 1.1 hwclock源码在哪里? util-linux 或者busybox 1.2 获取源码 git clone https://github.com/karelzak/uti ...
- Android:系统自定义鼠标样式切换
一.APP通过View修改鼠标样式 app view上修改鼠标样式比较简单,通过 hover event 获取鼠标坐标并使用如下方法修改为自定义图片: getWindow().getDecorView ...
- Linux 验证当前 Video0 不否是v4l设备 linux v4l 编程(1) Video 4 Linux 简介
#include <stdio.h> #include <string.h> #include <errno.h> #include <sys/types.h ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_09-前端显示当前用户-需求分析
登陆成功 应该要显示用户的信息 cookie只存了用户的身份令牌.不包含用户的信息 拿着短令牌 请求认证服务获取到jwt.然后存储到sessionStorage 1.用户请求认证服务,登录成功. 2. ...