Source:
Description:
For a student taking the online course "Data Structures" on China University MOOC (), 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 0 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
, whereStudentID
is a string of no more than 20 English letters and digits, andScore
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 GIf some score does not exist, output "−" 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 theStudentID
's are all distinct, and there is at least one qullified 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
Keys:
- 快乐模拟
- map(C++ STL)
- string(C++ STL)
Attention:
- 四舍五入要用round()函数;
- MAXSIZE最多有三倍的1E4;
Code:
1 /* 2 Data: 2019-05-26 21:12:36 3 Problem: PAT_A1137#Final Grading 4 AC: 55:00 5 6 题目大意: 7 获得证书需要,编程任务不少于200分,总分不少于60分 8 如果期中>期末分数,则总分=期中*0.4+期末*0.6 9 反之,总分=期末分数 10 输入: 11 第一行给出,完成编程的人数P,参加期中考试的人数M,参加期末考试的人数N,均<=1e4 12 接下来给出各项分数;id不超过20位 13 */ 14 15 #include16 #include 17 #include 18 #include