【1137】Final Grading (25分)【map 排序】

举报
野猪佩奇996 发表于 2022/01/23 23:05:53 2022/01/23
【摘要】 #include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm> #include<map>#inclu...

  
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5. #include<string.h>
  6. #include<algorithm>
  7. #include<map>
  8. #include<vector>
  9. #include<queue>
  10. #include<string>
  11. using namespace std;
  12. struct node{
  13. string name;
  14. int gp,gm,gf,g;
  15. };
  16. bool cmp(node a,node b){
  17. return a.g!=b.g?a.g>b.g:a.name<b.name;
  18. //总分递减,总分相同则姓名递增
  19. }
  20. map<string,int>idx;
  21. int main(){
  22. int p,m,n,score,cnt=1;
  23. //cnt为map的键,为了避免与"不存在"混淆 cnt=0表示该学生姓名在v中不存在
  24. cin>>p>>m>>n;
  25. vector<node>v,ans;
  26. string s;
  27. for(int i=0;i<p;i++){
  28. cin>>s>>score;
  29. if(score>=200){
  30. struct node a={s,score,-1,-1,0};
  31. v.push_back(a);
  32. idx[s]=cnt++;
  33. }
  34. }
  35. for(int i=0;i<m;i++){
  36. cin>>s>>score;
  37. if(idx[s]!=0) //如果该学生存在在map中
  38. v[idx[s]-1].gm=score;//期中成绩
  39. }
  40. for(int i=0;i<n;i++){
  41. cin>>s>>score;
  42. if(idx[s]!=0){//如果该学生存在在map中
  43. int temp=idx[s]-1;
  44. v[temp].gf=v[temp].g=score;
  45. if(v[temp].gm>v[temp].gf)
  46. v[temp].g=int(v[temp].gm*0.4+v[temp].gf*0.6+0.5);
  47. }
  48. }
  49. for(int i=0;i<v.size();i++)
  50. if(v[i].g>=60) ans.push_back(v[i]);
  51. sort(ans.begin(),ans.end(),cmp);
  52. for(int i=0;i<ans.size();i++)
  53. printf("%s %d %d %d %d\n",ans[i].name.c_str(),ans[i].gp,ans[i].gm,ans[i].gf,ans[i].g);
  54. system("pause");
  55. return 0;
  56. }

 

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/104032025

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。