1137. Final Grading (25)

#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值