1080 MOOC期终成绩 (25 分)

对于在中国大学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个合格的学生。

输入样例:

6 6 7
01234 880
a1903 199
ydjh2 200
wehu8 300
dx86w 220
missing 400
ydhfu77 99
wehu8 55
ydjh2 98
dx86w 88
a1903 86
01234 39
ydhfu77 88
a1903 66
01234 58
wehu8 84
ydjh2 82
missing 99
dx86w 81

输出样例:

missing 400 -1 99 99
ydjh2 200 98 82 88
dx86w 220 88 81 84
wehu8 300 55 84 84
 #include<iostream>
#include<map>
#include<string>
#include<set> using namespace std; struct grade
{
int onlineJudge;
int midTerm;
int final; grade()
{
onlineJudge = -;
midTerm = -;
final = -;
}
}; struct result
{
int total;
string name; result(int tol,string str)
{
total = tol;
name = str;
} bool operator>(const result& r)const
{
if(total > r.total)
return true; if(total==r.total && name<r.name)
return true; return false;
} bool operator<(const result& r)const
{
if(total < r.total)
return true; if(total==r.total && name>r.name)
return true; return false;
}
}; int main()
{
string str;
int P,M,N;
map<string,grade> m; cin>>P>>M>>N; for(int i=;i<P;++i)
{
grade g; cin>>str>>g.onlineJudge; m.insert(pair<string,grade>(str,g));
} for(int i=;i<M;++i)
{
grade g; cin>>str>>g.midTerm; map<string,grade>::iterator index = m.find(str); if(index == m.end())
m.insert(pair<string,grade>(str,g));
else
m[str].midTerm = g.midTerm;
} for(int i=;i<N;++i)
{
grade g; cin>>str>>g.final; map<string,grade>::iterator index = m.find(str); if(index == m.end())
m.insert(pair<string,grade>(str,g));
else
m[str].final = g.final;
} map<string,grade>::iterator index,begin = m.begin(),end = m.end();
set<result> s; for(index = begin;index != end;++index)
{
int total = ; if(index->second.onlineJudge >= )
{
if(index->second.midTerm > index->second.final)
total = 0.4*index->second.midTerm + 0.6*index->second.final + 0.5;
else
total = index->second.final; if(total >= )
s.insert(result(total,index->first));
}
} set<result>::reverse_iterator i,beg = s.rbegin(),en = s.rend(); for(i=beg;i!=en;++i)
cout<<i->name<<" "<<m[i->name].onlineJudge<<" "<<m[i->name].midTerm<<" "<<m[i->name].final<<" "<<i->total<<endl; return ;
}

PAT 乙级 1080 MOOC期终成绩 (25 分)的更多相关文章

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

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

  2. PAT1080 MOOC期终成绩 (25分) ——同样参考了柳婼大神的代码及思路,在自己的代码上做了修改,还是很复杂

    1080 MOOC期终成绩 (25分)   对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分 ...

  3. 1080. MOOC期终成绩 (25)

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

  4. PAT 1080 MOOC期终成绩(25)(STL-map及multiset+思路+测试点分析)

    1080 MOOC期终成绩(25 分) 对于在中国大学MOOC(http://www.icourse163.org/ )学习"数据结构"课程的学生,想要获得一张合格证书,必须首先获 ...

  5. PAT乙级:1090危险品装箱(25分)

    PAT乙级:1090危险品装箱(25分) 题干 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清 ...

  6. PAT乙级:1070 结绳 (25分)

    PAT乙级:1070 结绳 (25分) 题干 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟 ...

  7. PAT乙级:1015 德才论 (25分)

    1015 德才论 (25分) 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人 ...

  8. PAT 乙级 1065 单身狗 (25 分)

    1065 单身狗 (25 分) “单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数 N(≤ 50 000),是 ...

  9. 1080 MOOC期终成绩 (25 分)

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

随机推荐

  1. Activity简说

    Activity 四个状态 running 运行:前台显示,当前焦点 paused 暂停:上面被其他activity覆盖,有一部分可见 stopped 停止:被其他activity完全覆盖,不可见 d ...

  2. ES6箭头函数Arrow Function

    果然,隔了很长时间都没有来博客园上逛了...... 前一段时间一直在忙我们参加的一个比赛,转眼已经好久没有来逛过博客园了,果然还是很难坚持的...... 今天总算还是想起来要过来冒个泡,强行刷一波存在 ...

  3. Linux查看服务器配置

    服务器型号 [root@txs ~]# dmidecode|grep "System Information" -A9|egrep "Manufacturer|Produ ...

  4. SQL注入之Sqli-labs系列第四十七关,第四十八关,第四十九关(ORDER BY注入)

    0x1 源码区别点 将id变为字符型:$sql = "SELECT * FROM users ORDER BY '$id'"; 0x2实例测试 (1)and rand相结合的方式 ...

  5. HBase原理和设计

    转载 2016年1月10日:http://www.sysdb.cn/index.php/2016/01/10/hbase_principle/ 简介 架构 数据组织 原理 RS定位 region写入 ...

  6. 利用iftop找出是谁占用了带宽

    第一步:安装EPEL源    yum install epel-release 第二部:安装iftop         yum install iftop 然后用iftop命令即可查看相关信息 ift ...

  7. 小括号转义 '\\s'

    select split("2405F5 (base 16) Integrated Device Technology (Malaysia) Sdn. Bhd.","\\ ...

  8. hive 非等值连接, 设置hive为nonstrict模式

    1 数据准备 create table stocks(id int, date string,price string, company string); insert into table stoc ...

  9. tnsping无法ping通的问题,TNS-12535 TNS操作超时 (服务器环境:window server 2008R2 数据库环境:oracle 11 g)

    今天新搭建一个测试用的数据库服务器,操作系统为WIN server 2008 r2 版本.系统内已安装oracle 11g database,数据库服务端已配置完毕,监听listener已开启. 我在 ...

  10. CF999E Reachability from the Capital来自首都的可达性

    题目大意: 有n个节点m条边,边都是单向的,请你添加最少的边使得起点s到其他与其他每一个点之间都能互相到达 这题一看就是一个缩点啊 其实对于原有的m条边相连的一些点,如果之前他们已经形成了强连通分量( ...