博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1137. Final Grading (25)
阅读量:6762 次
发布时间:2019-06-26

本文共 3282 字,大约阅读时间需要 10 分钟。

For a student taking the online course "Data Structures" on China University MOOC (http://www.icourse163.org/), to be qualified for a certificate, he/she must first obtain no less than 200 points from the online programming assignments, and then receive a final grade no less than 60 out of 100. The final grade is calculated by G = (Gmid-termx 40% + Gfinalx 60%) if Gmid-term > Gfinal, or Gfinal will be taken as the final grade G. Here Gmid-term and Gfinal are the student's scores of the mid-term and the final exams, respectively.

The problem is that different exams have different grading sheets. Your job is to write a program to merge all the grading sheets into one.

Input Specification:

Each input file contains one test case. For each case, the first line gives three positive integers: P , the number of students having done the online programming assignments; M, the number of students on the mid-term list; and N, the number of students on the final exam list. All the numbers are no more than 10,000.

Then three blocks follow. The first block contains P online programming scores Gp's; the second one contains M mid-term scores Gmid-term's; and the last one contains N final exam scores Gfinal's. Each score occupies a line with the format: StudentID Score, where StudentID is a string of no more than 20 English letters and digits, and Score is a nonnegative integer (the maximum score of the online programming is 900, and that of the mid-term and final exams is 100).

Output Specification:

For each case, print the list of students who are qualified for certificates. Each student occupies a line with the format:

StudentID Gp Gmid-term Gfinal G

If some score does not exist, output "-1" instead. The output must be sorted in descending order of their final grades (G must be rounded up to an integer). If there is a tie, output in ascending order of their StudentID's. It is guaranteed that the StudentID's are all distinct, and there is at least one qualified student.

Sample Input:
6 6 701234 880a1903 199ydjh2 200wehu8 300dx86w 220missing 400ydhfu77 99wehu8 55ydjh2 98dx86w 88a1903 8601234 39ydhfu77 88a1903 6601234 58wehu8 84ydjh2 82missing 99dx86w 81
Sample Output:
missing 400 -1 99 99ydjh2 200 98 82 88dx86w 220 88 81 84wehu8 300 55 84 84
#include 
#include
#include
#include
using namespace std;struct node{ string id; int p, gm, gf, g;};vector
stu;bool cmp(struct node a, struct node b){ if(a.g == b.g) return a.id < b.id; return a.g > b.g;}int main(){ int p, m, n, t, cnt = 1; cin >> p >> m >> n; string st; map
to; for (int i = 0; i < p; i++) { cin >> st >> t; if (t >= 200) { stu.push_back(node{st, t, -1, 0, 0}); to[st] = cnt++; } } for (int i = 0; i < m; i++) { cin >> st >> t; if(to[st]) stu[to[st]-1].gm = t; } for (int i = 0; i < n; i++) { cin >> st >> t; if(to[st]) stu[to[st]-1].gf = t; } for (int i = 0; i < cnt-1; i++) { if(stu[i].gm > stu[i].gf){ stu[i].g = stu[i].gm * 0.4 + stu[i].gf * 0.6 + 0.5; }else{ stu[i].g = stu[i].gf; } } sort(stu.begin(), stu.end() , cmp); for (int i = 0; i < cnt-1; i++) { if(stu[i].g >= 60){ cout << stu[i].id << ' ' << stu[i].p << ' ' << stu[i].gm << ' ' << stu[i].gf << ' ' << stu[i].g << endl; } } return 0;}

转载地址:http://zzdeo.baihongyu.com/

你可能感兴趣的文章
[转载]Web前端研发工程师编程能力飞升之路
查看>>
Redis
查看>>
XINS 3.0 正式版发布,远程 API 调用规范
查看>>
(转)Oracle中For和while及一些应用
查看>>
jQuery基础及选择器
查看>>
DragonFly BSD 3.2 发布
查看>>
C#中为什么需要装箱拆箱操作?
查看>>
PHP类中一般方法与静态方法的疑问
查看>>
[转]PHP花括号变量
查看>>
Fedora16安装中文语言包和中文输入法
查看>>
Windows 8实用窍门系列:14.windows 8中粘贴板(剪切板)的使用
查看>>
ASP.NET中 RadioButtonList(单选按钮组)的使用
查看>>
SESSION 丢失
查看>>
DES可逆加解密
查看>>
如何理解ip路由和操作linux的路由表
查看>>
WCF的几种寄宿方式 ( 转)
查看>>
ORACLE 数据库 SQL 转换 只取 年和月
查看>>
区间查询[2009国家集训队]小Z的袜子(hose)
查看>>
Android之使用微信开放api (三)---注册与反注册应用到微信
查看>>
我是怎样看待微博的
查看>>