#include<iostream>#include<algorithm>#include<unordered_map>#include<vector>#include<cmath>usingnamespace std;
unordered_map<string, vector<int>> grades;//明白hashmap的用法表示映射的相对关系,一个id//映射到那个同学的三科成绩
vector <int> q[4];//本质是个可以看作是个二维数组但是vector是个容器//q[0]:A q[1]:C q[2]:M q[3]: Eintget_rank(vector<int>& a ,int x)//二分找到第一个下表为x的数{//但是该数组是一个递增的数组所以要找最右边的第一个数字int l =0, r = a.size()-1;//vector的函数while(l < r){int mid = l + r +1>>1;//l = mid 为了防止死循环所以这里要加1if(a[mid]<= x) l = mid;else
r = mid -1;}return a.size()- r;}intmain(){int n, m;
cin >> n >> m;for(int i =0; i < n; i ++){
string id;int t[4]={0};
cin >> id;for(int j =1; j <4; j ++){
cin >> t[j];
t[0]+= t[j];}
t[0]=round(t[0]/3.0);//round函数是math库中的除数for(int j =0; j <4; j ++){
q[j].push_back(t[j]);//加到vector容器中
grades[id].push_back(t[j]);}}for(int i =0; i <4; i ++)sort(q[i].begin(),q[i].end());char names[]="ACME";while(m --){
string id;
cin >> id;if(grades.count(id)==0)puts("N/A");//哈希表用法else{int res = n +1;char c;for(int i =0; i <4; i ++){int rank =get_rank(q[i], grades[id][i]);if(rank < res){
res = rank;//四门课选分最高的输出
c = names[i];}}
cout << res <<' '<< c << endl;}}return0;}