}
}
}
}
if(option=='M'){
sort(vec.begin(), vec.end(), SortM);
for(int i=0; i<vec.size(); i++){
if(vec[i].A>=0){ //只遍历有分数的学生
int cur_rank = i+1; //当前排序后的排名
if(i==0 || vec[i].M!=vec[i-1].M){//当前学生的分数与上一个学生不相等
cur_rank = i+1;
vec[i].crank = cur_rank;
}else{ //当前学生的分数与上一个学生相等,取一样的排名
cur_rank = vec[i-1].crank;
vec[i].crank = cur_rank;
}
if(cur_rank < vec[i].best_rank){ //当前排名小于最好排名,更新最好排名和优先级科目
vec[i].best_rank = cur_rank;
vec[i].best_course = 'M';
}
if(cur_rank == vec[i].best_rank){ //当前排名等于最好排名,根据优先级是否替换
if(vec[i].best_course=='E'){
//当前排名的课程为M,且比原来的课程优先级高,更新
vec[i].best_course = 'M';
}
}
}
}
}
if(option=='E'){
sort(vec.begin(), vec.end(), SortE);
for(int i=0; i<vec.size(); i++){
if(vec[i].A>=0){ //只遍历有分数的学生
int cur_rank = i+1; //当前排序后的排名
if(i==0 || vec[i].E!=vec[i-1].E){//当前学生的分数与上一个学生不相等
cur_rank = i+1;
vec[i].crank = cur_rank;
}else{ //当前学生的分数与上一个学生相等,取一样的排名
cur_rank = vec[i-1].crank;
vec[i].crank = cur_rank;
}
if(cur_rank < vec[i].best_rank){ //当前排名小于最好排名,更新最好排名和优先级科目
vec[i].best_rank = cur_rank;
vec[i].best_course = 'E';
}
//课程E为最小优先级,不用若排名相等,不用更新
}
}
}
if(option=='A'){
sort(vec.begin(), vec.end(), SortA);
for(int i=0; i<vec.size(); i++){
if(vec[i].A>=0){ //只遍历有分数的学生
int cur_rank = i+1; //当前排序后的排名
if(i==0 || vec[i].A!=vec[i-1].A){//当前学生的分数与上一个学生不相等
cur_rank = i+1;
vec[i].crank = cur_rank;
}else{ //当前学生的分数与上一个学生相等,取一样的排名
cur_rank = vec[i-1].crank;
vec[i].crank = cur_rank;
}
if(cur_rank < vec[i].best_rank){ //当前排名小于最好排名,更新最好排名和优先级科目
vec[i].best_rank = cur_rank;
vec[i].best_course = 'A';
}
if(cur_rank == vec[i].best_rank){ //当前排名等于最好排名,根据优先级是否替换
if(vec[i].best_course=='C' || vec[i].best_course=='M' || vec[i].best_course=='E'){
//当前排名的课程为A,且比原来的课程优先级高,更新
vec[i].best_course = 'A';
}
}
}
}
}
}
int main(){
int N, M;
vector<Student> vec;
cin >> N >> M;
for(int pos=0; pos<N; pos++){
Student s;
cin >> s.ID >> s.C >> s.M >> s.E;
s.A = (s.C+s.E+s.M) / 3;
s.best_rank = N;
vec.push_back(s);
}
StudentSort(vec, 'A');
StudentSort(vec, 'C');
StudentSort(vec, 'M');
StudentSort(vec, 'E');
// M次查询
for(int pos=0; pos<M; pos++){
string id;
cin >> id;
bool id_exist = false;
for(int i=0; i<vec.size(); i++){
if(id == vec[i].ID){
cout << vec[i].best_rank << " " << vec[i].best_course << endl;
id_exist = true;
break;
}
}
if(!id_exist) cout << "N/A" << endl;
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)