问题遇到的现象和发生背景
具体在代码中的注释。
问题相关代码,请勿粘贴截图
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
struct node {
string id;
int gp, gm, gf, g;
};
bool cmp(node a, node b) {
return a.g != b.g ? a.g > b.g : a.id < b.id;
}
int main()
{
int p, m, n, score, cnt = 1;
string s;
vector<node> v, ans;
map<string, int> idx;
cin >> p >> m >> n;
for(int i = 0; i < p; i++) {
cin >> s >> score;
if(score >= 200) {
v.push_back(node{s, score, -1, -1, 0});
idx[s] = cnt++;
}
}
for(int i = 0; i < m; i++) {
cin >> s >> score;
if(idx[s] != 0) v[idx[s]-1].gm = score;
}
for(int i = 0; i < n; i++) {
cin >> s >> score;
if(idx[s] != 0) {
v[idx[s]-1].gf = v[idx[s]-1].g = score;
}
if(v[idx[s]-1].gm > v[idx[s]-1].gf) v[idx[s]-1].g = int(v[idx[s]-1].gm * 0.4 + v[idx[s]-1].gf * 0.6 + 0.5);
}
for(int i = 0; i < v.size(); i++) {
if(v[i].g >= 60) ans.push_back(v[i]);
}
sort(ans.begin(), ans.end(), cmp);
for(int i = 0; i < ans.size(); i++) {
printf("%s %d %d %d %d\n", ans[i].id.c_str(), ans[i].gp, ans[i].gm, ans[i].gf, ans[i].g);
} /////////////就是这个地方/////////
return 0;
}