1012. The Best Rank (25)

来源:互联网 发布:网络手机兼职是真的吗 编辑:程序博客网 时间:2024/05/18 02:27
#include <iostream>#include <algorithm>#include <vector>#include <map>#include <string>using namespace std;struct score {int s[4];};char ci[] = "CMEA";int main(int argc, char **argv) {int n, m;map<string, score> ss;vector<int> crs[4];cin >> n >> m;for(int i = 0; i < 4; i ++) {crs[i].reserve(n);}for(int i = 0; i < n; i ++) {string id;cin >> id;score s = {0};for(int j = 0; j < 3; j ++) {int tmp;cin >> tmp;s.s[j] = tmp;s.s[3] += tmp;}s.s[3] /= 3;for(int j = 0; j < 4; j ++) {crs[j].push_back(s.s[j]);}ss[id] = s;}for(int i = 0; i < 4; i ++) {sort(crs[i].begin(), crs[i].end());}for(int i = 0; i < m; i ++) {string id;cin >> id;map<string, score>::iterator ssit;ssit = ss.find(id);if(ssit != ss.end()) {int * s = ssit->second.s;int rank[4], index=0;for(int j = 0; j < 4; j ++) {rank[j] = crs[j].end() - upper_bound(crs[j].begin(), crs[j].end(), s[j]);if(rank[j] < rank[index])index = j;}if(rank[3] <= rank[index])index = 3;cout << rank[index] + 1 << ' ' << ci[index] << endl;}elsecout << "N/A" << endl;}return 0;}

0 0