#include <cmath>
#include <vector>
#include <climits>
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
class Grade {
public:
string ID;
int course[4];
int rank[4];
int bestRank = INT_MAX;
char bestCourse;
static int flag;
};
int Grade::flag = -1;
bool compare(Grade a, Grade b) { return a.course[Grade::flag] > b.course[Grade::flag]; }
int main() {
const char COURSE[5] = "ACME";
int N, M;
cin >> N >> M;
map<string, Grade> rankMap;
vector<Grade> orderList;
for (int i = 0; i < N; i++) {
Grade grade;
cin >> grade.ID >> grade.course[1] >> grade.course[2] >> grade.course[3];
grade.course[0] = round((grade.course[1] + grade.course[2] + grade.course[3]) / 3.0);
rankMap[grade.ID] = grade;
orderList.push_back(grade);
}
vector<string> checklist;
for (int i = 0; i < M; i++) {
string ID;
cin >> ID;
checklist.push_back(ID);
}
for (int flag = 0; flag < 4; flag++) {
Grade::flag = flag;
sort(orderList.begin(), orderList.end(), compare);
for (int i = 0; i < orderList.size(); i++) {
string id = orderList.at(i).ID;
rankMap[id].rank[Grade::flag] = i + 1;
// 排名并列应该1、1、3、4、5,而不是1、1、2、3、4
if (i != 0) {
string lastID = orderList.at(i - 1).ID;
if (rankMap[id].course[Grade::flag] == rankMap[lastID].course[Grade::flag]) {
rankMap[id].rank[Grade::flag] = rankMap[lastID].rank[Grade::flag];
}
}
if (rankMap.count(id) && rankMap[id].rank[Grade::flag] < rankMap[id].bestRank) {
rankMap[id].bestRank = rankMap[id].rank[Grade::flag];
rankMap[id].bestCourse = COURSE[flag];
}
}
}
for (int i = 0; i < checklist.size(); i++) {
if (rankMap.count(checklist[i])) {
cout << rankMap[checklist[i]].bestRank << " " << rankMap[checklist[i]].bestCourse << endl;
}
else {
cout << "N/A" << endl;
}
}
return 0;
}
PAT A1012 The Best Rank
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 传送门 https://www.patest.cn/contests/pat-a-practise/1012 题目...
- 我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。...
- 写法挺蠢,但是一次AC了也就算了吧23333331012 The Best Rank