PAT_B_1080_C++(25分)
生活随笔
收集整理的這篇文章主要介紹了
PAT_B_1080_C++(25分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看到25分的就放棄Java吧,鐵定有超時的
#include <cstdio> #include <map> #include<vector> #include <iostream> #include <string> #include <algorithm> using namespace std; struct node {string name;int gp, gm, gf, g; }; map<string, int> idx; vector<node> v, ans; bool cmp(node a, node b) {if (a.g != b.g) return a.g > b.g;else return a.name < b.name; } int main() {int p, m, n, score, count = 1;//count作為編號scanf("%d%d%d", &p, &m, &n);string s;for (int i = 0; i < p; i++) {cin >> s >> score;if (score >= 200) {//把編程分數低于200的過濾掉idx[s] = count++;v.push_back(node{ s, score, -1, -1, 0 });//最新入容器的其他分數都是-1,方便后面輸出}}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) {int temp = idx[s] - 1;v[temp].gf = v[temp].g = score;//這里道理同上,這樣寫的方式確實比較省事if (v[temp].gm > v[temp].gf) {v[temp].g = int(0.4 * v[temp].gm + 0.6 * v[temp].gf + 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].name.c_str(), ans[i].gp, ans[i].gm, ans[i].gf, ans[i].g);} }總結
以上是生活随笔為你收集整理的PAT_B_1080_C++(25分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: charls使用笔记[通俗易懂]
- 下一篇: s3c2440移植MQTT