1012 The Best Rank
思路:读入全部的数据之后,按照四个cmp函数对数组进行排序,给每生的4个科目的排名赋值,读入要检验的id后使用strcmp对数组中的id进行遍历(幸好这里数组大小和要检验的数目乘积不超过4万),如果找到了相同id,调用写好的得到bestRank的函数进行输出即可,没找到就输出“N\A”
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;const int maxn = 2010;struct stud{char id[7] = "";int C = 0;int Crank = 0; int M = 0;int Mrank = 0;int E = 0;int Erank = 0;int A = 0;int Arank = 0;
}studs[maxn];bool cmp_C(stud a,stud b){if(a.C!=b.C)return a.C>b.C;else return strcmp(a.id,b.id)<0;
}bool cmp_M(stud a,stud b){if(a.M!=b.M)return a.M>b.M;else return strcmp(a.id,b.id)<0;
}bool cmp_E(stud a,stud b){if(a.E!=b.E)return a.E>b.E;else return strcmp(a.id,b.id)<0;
}bool cmp_A(stud a,stud b){if(a.A!=b.A)return a.A>b.A;else return strcmp(a.id,b.id)<0;
}void getBest(stud s){int bestRank = 2001;int bestSubject = '*';if(s.Arank<bestRank){bestRank = s.Arank;bestSubject = 'A';}if(s.Crank<bestRank){bestRank = s.Crank;bestSubject = 'C';}if(s.Mrank<bestRank){bestRank = s.Mrank;bestSubject = 'M';}if(s.Erank<bestRank){bestRank = s.Erank;bestSubject = 'E';}printf("%d %c\n",bestRank,bestSubject);
}int main(){int n,m;scanf("%d %d",&n,&m);for(int i=0;i<n;i++){scanf("%s %d %d %d",studs[i].id,&studs[i].C,&studs[i].M,&studs[i].E);studs[i].A = (studs[i].C+studs[i].M+studs[i].E)/3;}//按照C进行排序sort(studs,studs+n,cmp_C);//给Crank赋值 studs[0].Crank = 1;for(int i=1;i<n;i++){if(studs[i].C == studs[i-1].C)studs[i].Crank = studs[i-1].Crank;else studs[i].Crank = i+1;}//同样对MEA进行相同操作//M sort(studs,studs+n,cmp_M);studs[0].Mrank = 1;for(int i=1;i<n;i++){if(studs[i].M == studs[i-1].M)studs[i].Mrank = studs[i-1].Mrank;else studs[i].Mrank = i+1;}//Esort(studs,studs+n,cmp_E);studs[0].Erank = 1;for(int i=1;i<n;i++){if(studs[i].E == studs[i-1].E)studs[i].Erank = studs[i-1].Erank;else studs[i].Erank = i+1;}//Asort(studs,studs+n,cmp_A);studs[0].Arank = 1;for(int i=1;i<n;i++){if(studs[i].A == studs[i-1].A)studs[i].Arank = studs[i-1].Arank;else studs[i].Arank = i+1;}//开始检验char input[7] = ""; for(int i=0;i<m;i++){scanf("%s",input);int hasFound = false;for(int j=0;j<n;j++){if(strcmp(studs[j].id,input)==0){getBest(studs[j]);hasFound = true;}}if(!hasFound)printf("N/A\n");} return 0;
}
1012 The Best Rank相关推荐
- PAT甲级1012 The Best Rank :[C++题解]4个成绩取排名最低:排序、二分(好题)
文章目录 题目分析 题目链接 题目分析 遇到的问题:信息存在结构体(✖)中,然后排名呢?需要分别对 C.M.E.A排四次吗? 这里成绩的存储 用二维数组 vector<int> q[4]; ...
- PAT 1012 The Best Rank (25 分)
1012 The Best Rank (25 分) 今天给大家分享的是PAT甲级的一道小题,设计题 原题请点击我 简单翻译: 设计一个排名表,这个表中以学生ID为主键,C表示程序设计语言的成绩,M表示 ...
- PAT甲级真题(结构体排序)——1012. The Best Rank (25)
1012. The Best Rank (25) To evaluate the performance of our first year CS majored students, we consi ...
- PAT 1012 The Best Rank
参考自: https://www.nowcoder.com/questionTerminal/5a5281aef52a4f6f943929c05ba71c11 题目链接: 1012 The Best ...
- PAT 甲级 1012 The Best Rank
PAT 甲级 1012 The Best Rank To evaluate the performance of our first year CS majored students, we cons ...
- 【解析】1012 The Best Rank (25 分)
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 To evaluate the performance of our first year CS majored students ...
- 1012 The Best Rank (25)
题目描述: To evaluate the performance of our first year CS majored students, we consider their grades of ...
- 1012 The Best Rank (25 分)【难度: 中 / 知识点: 排序 前缀和】
https://pintia.cn/problem-sets/994805342720868352/problems/994805502658068480 解析: 这里的每一项排名有一个坑的点,就是 ...
- 【PAT甲级 排序】1012 The Best Rank (25 分) C++ 全部AC
题目 中规中矩的一道题.排名的顺序一开始没太明白,但是理解之后写起来挺流畅的,没什么坑. 解题思路:题目会给出所有学生所有科目的成绩.想要看分学生的学号. 我们要先给这些学生单科成绩排序,算出它们的单 ...
最新文章
- MIT发布2018年全球10大突破性技术!
- Exchange2010配置实验(六)部署forefront到edge服务器
- 自动化工具之二:win32gui
- 修改mysql数据库的编码格式
- python-sdk-demo的打包
- 零拷贝机制在文件传输中的使用手法
- 心胸狭窄小肚鸡肠的男人_为心胸开阔的教育者编写新的剧本
- pythonif有多个条件怎么办,Python if有多个条件怎么办
- Q96:PT(3.3):大理石纹理(Marble Texture)
- OC开发实例变量的访问控制详解
- DS18B20引脚 实物引脚 (千万不要接反啊)
- 清除html宏病毒,手动清除EXCEL宏病毒的方法
- CDUTCM OJ 2017第一次月赛
- 大数据工具主要分为哪几类,每类中具体有哪些工具?
- JDBC Mybatis 调用 ORACLE 存储过程 函数 返回 varray 类型 function return varray out varray
- html怎么在文字中加小方框,css之列表数据前加上小方框
- 【转载】发一篇能激励大家拼搏的文章,文中内容属实
- win8系统计算机属性在哪个文件夹,Win8如何更改文件夹的只读或系统属性
- linux32系统下载地址,deepin 15.3 32位ISO下载地址,深度系统最后支持32位的版本
- 【Simulink】粒子群算法(PSO)整定PID参数(附代码和讲解)