#include <bits/stdc++.h>
using namespace std;
struct node{
string sid;
int gp, gm, gf, g;
node(){}
node(int p, int m, int f){
gp = p; gm = m; gf = f;
}
};
map<string, node> mp;
bool cmp(node &a, node &b){
return a.g == b.g ? a.sid < b.sid : a.g > b.g;
}
int main()
{
int p, m, n;
ios::sync_with_stdio(false);
cin >> p >> m >> n;
string sid;
int score;
for(int i = 0; i < p; ++i){//programming
cin >> sid >> score;
mp[sid] = node(score, -1, -1);
}
for(int i = 0; i < m; ++i){//mid-term
cin >> sid >> score;
auto it = mp.find(sid);
if(it != mp.end()) it->second.gm = score;
else mp[sid] = node(-1, score, -1);
}
for(int i = 0; i < n; ++i){//final
cin >> sid >> score;
auto it = mp.find(sid);
if(it != mp.end()) it->second.gf = score;
else mp[sid] = node(-1, -1, score);
}
vector<node> v;
for(auto &x : mp){
auto &y = x.second;
if(y.gp < 200) continue;
node e = x.second;
e.sid = x.first;
e.g = (e.gm > e.gf) ? 0.4 * e.gm + 0.6 * e.gf + 0.5: e.gf;
if(e.g >= 60)v.push_back(e);
}
sort(v.begin(), v.end(), cmp);
for(auto &x : v){
cout << x.sid <<" "<< x.gp <<" "<< x.gm <<" "<< x.gf <<" "<< x.g << endl;
}
return 0;
}
1137. Final Grading (25)
最新推荐文章于 2021-02-24 12:49:25 发布