1080 MOOC期终成绩

对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分(满分100)。总评成绩的计算公式为 G=(G​mid−term​​×40%+G​final​​×60%),如果 G​mid−term​​>G​final​​;否则总评 G 就是 G​final​​。这里 G​mid−term​​ 和 G​final​​ 分别为学生的期中和期末成绩。

现在的问题是,每次考试都产生一张独立的成绩单。本题就请你编写程序,把不同的成绩单合为一张。

输入格式:

输入在第一行给出3个整数,分别是 P(做了在线编程作业的学生数)、M(参加了期中考试的学生数)、N(参加了期末考试的学生数)。每个数都不超过10000。

接下来有三块输入。第一块包含 P 个在线编程成绩 G​p​​;第二块包含 M 个期中考试成绩 G​mid−term​​;第三块包含 N 个期末考试成绩 G​final​​。每个成绩占一行,格式为:学生学号 分数。其中学生学号为不超过20个字符的英文字母和数字;分数是非负整数(编程总分最高为900分,期中和期末的最高分为100分)。

输出格式:

打印出获得合格证书的学生名单。每个学生占一行,格式为:

学生学号 G​p​​ G​mid−term​​ G​final​​ G

如果有的成绩不存在(例如某人没参加期中考试),则在相应的位置输出“−1”。输出顺序为按照总评分数(四舍五入精确到整数)递减。若有并列,则按学号递增。题目保证学号没有重复,且至少存在1个合格的学生。

输入样例:

  1. 6 6 7
  2. 01234 880
  3. a1903 199
  4. ydjh2 200
  5. wehu8 300
  6. dx86w 220
  7. missing 400
  8. ydhfu77 99
  9. wehu8 55
  10. ydjh2 98
  11. dx86w 88
  12. a1903 86
  13. 01234 39
  14. ydhfu77 88
  15. a1903 66
  16. 01234 58
  17. wehu8 84
  18. ydjh2 82
  19. missing 99
  20. dx86w 81

输出样例:

  1. missing 400 -1 99 99
  2. ydjh2 200 98 82 88
  3. dx86w 220 88 81 84
  4. wehu8 300 55 84 84
  5.   题解:这道题目做起来还是有点麻烦的,如果不用map的话一般就会超时,最后一个测试点居然是有人期中考试考0分,多亏一位大哥指点,要不然怕是想破脑袋也想不出来。
      刚开始对于上机成绩不足200的直接跳过,因为如果成绩合格的话必须参加期末考试,所以当输入期末考试成绩时,对于合格的成绩,存进一个数组内(或者vecetor),写一个结构体排序,然后依次输出即可。
  6. 代码如下:
  1. #include<iostream>
  2. #include<map>
  3. #include<string>
  4. #include<algorithm>
  5. using namespace std;
  6.  
  7. struct stu{
  8. string name;
  9. double gp = -, gm = -, gf = -;
  10. int g = ;
  11. };
  12.  
  13. bool cmp( const stu &a, const stu & b){
  14. if( a.g != b.g)
  15. return a.g > b.g;
  16. else
  17. return a.name < b.name;
  18. }
  19.  
  20. int main()
  21. {
  22. int P, M, N, temp = , grade;
  23. stu a[];
  24. double sco;
  25. map<string, double> b;
  26. map<string, double> c;
  27. string nam;
  28. scanf("%d %d %d", &P, &M, &N);
  29. for( int i = ; i < P; i++){
  30. cin>>nam>>sco;
  31. if(sco >= ){
  32. b[nam] = sco;
  33. }
  34. }
  35. for( int i = ; i < M; i++){
  36. cin>>nam>>sco;
  37. if(b[nam] >= ){
  38. c[nam] = sco;
  39. }
  40. }
  41. for( int i = ; i < N; i++){
  42. cin>>nam>>sco;
  43. if( b[nam] < )
  44. continue;
  45. if( c.count(nam) > && c[nam] > sco)
  46. grade = (int)((c[nam]*0.4 + sco*0.6) + 0.5);
  47. else
  48. grade = (int)sco;
  49. if( grade >= ){
  50. a[temp].name = nam;
  51. a[temp].gp = b[nam];
  52. if(c.count(nam) == )
  53. a[temp].gm = -;
  54. else
  55. a[temp].gm = c[nam];
  56. a[temp].gf = sco;
  57. a[temp].g = grade;
  58. temp++;
  59. }
  60. }
  61. sort(a,a+temp,cmp);
  62. for( int i = ; i < temp; i++){
  63. cout<<a[i].name;
  64. printf(" %.0lf %.0lf %.0lf %d\n",a[i].gp,a[i].gm,a[i].gf,a[i].g);
  65. }
  66. return ;
  67. }

PAT Basic 1080的更多相关文章

  1. PAT Basic 1080 MOOC期终成绩 (25 分)

    对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分( ...

  2. PAT Basic 1057

    1057 数零壹 给定一串长度不超过 10​5​​ 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有 ...

  3. PAT (Basic Level) Practise (中文)-1039. 到底买不买(20)

    PAT (Basic Level) Practise (中文)-1039. 到底买不买(20) http://www.patest.cn/contests/pat-b-practise/1039 小红 ...

  4. PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20)

    PAT (Basic Level) Practise (中文)-  1022. D进制的A+B (20)  http://www.patest.cn/contests/pat-b-practise/1 ...

  5. PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)

    PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...

  6. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  7. PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)

    PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)    http://www.patest.cn/contests/pat-b-practise/10 ...

  8. PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)

    PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)  http://www.patest.cn/contests/pat-b-practise/1027 本题 ...

  9. PAT (Basic Level) Practise (中文)-1028. 人口普查(20)

    PAT (Basic Level) Practise (中文)-1028. 人口普查(20)   http://www.patest.cn/contests/pat-b-practise/1028 某 ...

随机推荐

  1. jsfiddle.net上的记录

    1.JQuery: http://jsfiddle.net/uryc1908/ 2.e-chart: http://jsfiddle.net/8fq96a7s/ 3.easyUI http://jsf ...

  2. springboot启动提示缺少数据源

    If you want an embedded database please put a supported one on the classpath. If you have database s ...

  3. springboot集成shiro实现权限缓存和记住我

    到这节为止,我们已经实现了身份验证和权限验证.但是,如果我们登录之后多次访问http://localhost:8080/userInfo/userDel的话,会发现权限验证会每次都执行一次.这是有问题 ...

  4. springboot 2.0 Redis command timed out的解决

    环境:springboot 2.0.7 spring data redis springboot从1.x升级到2.x后,spring data redis使用的redis客户端驱动从1.x的jedis ...

  5. 用户登录保存数据实例(慕课笔记 使用SharedPreferences保存用户名)

    学习视频之后自己操作时的笔记. 0.视频地址:http://www.imooc.com/video/3265 1.功能预览: 说明:1)输入错误用户名和密码,点击登录,弹出提示框“禁止登录”: 2)输 ...

  6. db2数据库创建索引,删除索引,查看表索引,SQL语句执行计划以及优化建议

    1.建立表索引 create index 索引名 on 表名(列名,列名); 2.删除表索引 drop index 索引名 on 表名; 3.查看表索引 select * from sysibm.sy ...

  7. Bezier(贝塞尔曲线)

    CDC::PolyBezierBOOL PolyBezier( const POINT* lpPoints, int nCount ); 和 曲线原理及多段曲线连接处如何光滑连接:第一段曲线要有4个点 ...

  8. momentum公式

    momentum对于w的更新公式: http://caffe.berkeleyvision.org/tutorial/solver.html

  9. css实现页面文字不换行、自动换行、强制换行

    强制不换行 div{ white-space:nowrap; } 自动换行 div{ word-wrap: break-word; word-break: normal; } 强制英文单词断行 div ...

  10. java基础——快速排序

    今天又把以前学的快速排序拿出来回忆一下 高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对“6 1 2 7 9 3 ...