题意:第一行给出N,K分别是几个人,测试几个人,接下来N行为学生ID,C成绩,M成绩,E成绩。K行测试的学生ID,不存在则输出N/A。
题解:建立学生结构体,包含学生ID、数组grade保存分数,rank数组保存后续的排名。利用结构体的快速排序,将排名赋值给rank。最后用map进行以ID为下标遍历。
详细代码样例:
#include <bits/stdc++.h>
using namespace std;
struct student{
string ID;
int grade[4],rank[4];//学生结构体含有ID,以及分数,和排名
};
bool comp1(student x,student y){
return x.grade[0]>y.grade[0];//升序排列
}
bool comp2(student x,student y){
return x.grade[1]>y.grade[1];
}
bool comp3(student x,student y){
return x.grade[2]>y.grade[2];
}
bool comp4(student x,student y){
return x.grade[3]>y.grade[3];
}
int main(){
student s [200];
int N,K;
string ID;
int C,M,E,i;
cin>>N&