#include<cstdio>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
struct Student
{
string StudentId;
int A, C, M, E;
int Ar, Cr, Mr, Er;
}student[2000];
string stu[2000];
bool cmpA(Student a, Student b) {
return a.A > b.A;
}
bool cmpC(Student a, Student b) {
return a.C > b.C;
}
bool cmpM(Student a, Student b) {
return a.M > b.M;
}
bool cmpE(Student a, Student b) {
return a.E > b.E;
}
int main() {
int N, M;
cin >> N >> M;
for (int i = 0; i < N; i++) {
cin >> student[i].StudentId;
cin >> student[i].C >> student[i].M >> student[i].E;
student[i].A = student[i].C + student[i].M + student[i].E;
}
sort(student, student + N, cmpA);
student[0].Ar = 1;
for (int i = 1; i < N; i++) {
if (student[i].A == student[i - 1].A)
student[i].Ar = student[i - 1].Ar;
else {
student[i].Ar = i + 1;
}
}
sort(student, student + N, cmpC);
student[0].Cr = 1;
for (int i = 1; i < N; i++) {
if (student[i].C == student[i - 1].C)
student[i].Cr = student[i - 1].Cr;
else {
student[i].Cr = i + 1;
}
}
sort(student, student + N, cmpM);
student[0].Mr = 1;
for (int i = 1; i < N; i++) {
if (student[i].M == student[i - 1].M)
student[i].Mr = student[i - 1].Mr;
else {
student[i].Mr = i + 1;
}
}
sort(student, student + N, cmpE);
student[0].Er = 1;
for (int i = 1; i < N; i++) {
if (student[i].E == student[i - 1].E)
student[i].Er = student[i - 1].Er;
else {
student[i].Er = i + 1;
}
}
for (int i = 0; i < M; i++) {
cin >> stu[i];
char temp1 = 'A';
int temp2 = 0;
bool b = 0;
for (int j = 0; j < N; j++) {
if (stu[i] == student[j].StudentId) {
temp2 = student[j].Ar;
if (temp2 > student[j].Cr) {
temp1 = 'C';
temp2 = student[j].Cr;
}
if (temp2 > student[j].Mr) {
temp1 = 'M';
temp2 = student[j].Mr;
}
if (temp2 > student[j].Er) {
temp1 = 'E';
temp2 = student[j].Er;
}
b = 1;
break;
}
}
if (b == 0) {
cout << "N/A" << endl;
}
else {
cout<<temp2<<" "<<temp1<<endl;
}
}
return 0;
}
1012 The Best Rank
最新推荐文章于 2022-08-16 11:09:37 发布