当前位置:网站首页>PAT serie a 1137 final grades
PAT serie a 1137 final grades
2022-08-02 17:04:00 【keyboard sonata】
For students studying "Data Structures" in MOOCs of Chinese universities, in order to obtain a certificate, they must first obtain at least 200 points for online programming assignments, and then obtain at least 60 points in the overall evaluation (out of 100 points)).
The calculation formula of the overall evaluation score is G=(Gmid−term×40%+Gfinal×60%), if Gmid−term>Gfinal; otherwise, the overall evaluation G is Gfinal.
Here Gmid−term and Gfinal are the student's midterm and final grades, respectively.
The problem now is that each exam produces a separate report card.
This question asks you to write a program to combine different transcripts into one.
Input format
The input gives 3 integers on the first line, P (the number of students who did online programming assignments), M (the number of students who took the midterm exam), N (the number of students who took the final exam).Three blocks of input follow.
The first block contains P online programming grades Gp;
The second block contains M midterm test scores Gmid−term;
The third block contains N final exam scores Gfinal.
Each grade occupies one line, the format is: student number score.
Where Student ID is English letters and numbers with no more than 20 characters; Score is a non-negative integer (the maximum total score for programming is 900, and the maximum score for mid-term and final is 100).
Output Format
Prints out the list of students who have received certificates.One line for each student in the format:
Student Number Gp Gmid−term Gfinal G
If some grades do not exist (eg someone did not take the midterm exam), output "−1" in the corresponding position.The output order is in descending order of the total score (rounded to the nearest whole number).
If there is a tie, it will be incremented by student number.
The question ensures that the student number is not duplicated and that there is at least 1 qualified student.
Data Range
1≤P,M,N≤10000
Input Example:
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
Example output:
missing 400 -1 99 99
ydjh2 200 98 82 88
dx86w 220 88 81 84
wehu8 300 55 84 84
My solution:
#include using namespace std;struct Student{string id;int p, m, f, s;Student(): p(-1), m(-1), f(-1), s(0){}void calc(){if(m > f) s = round(m*0.4 + f*0.6);else s = f;}bool operator< (const Student& t) const{if(s != t.s) return s > t.s;else{return id < t.id;}}};int main(){int p, m, n;cin >> p >> m >> n;unordered_map hash;string id;int s;for(int i = 0; i < p; i ++ ){cin >> id >> s;hash[id].id = id;hash[id].p = s;}for(int i = 0; i < m; i ++ ){cin >> id >> s;hash[id].id = id;hash[id].m = s;}for(int i = 0; i < n; i ++ ){cin >> id >> s;hash[id].id = id;hash[id].f = s;}vector students;for(auto per : hash){auto stu = per.second;stu.calc();if(stu.p >= 200 && stu.s >= 60) students.push_back(stu);}sort(students.begin(), students.end());for(auto re : students){cout << re.id << ' ' << re.p << ' ' << re.m << ' ' << re.f << ' ' << re.s << endl;}return 0;}
Harvest:
Structure constructor initialization: Student(): p(-1), m(-1), f(-1), s(0){}
Define the internal function of the structure
边栏推荐
猜你喜欢
随机推荐
页面返回顶部和固定导航栏js基础案例
2022-07-19 第五小组 瞒春 学习笔记
Explain in detail how the bit manipulation operators in C language can be used?
事件对象,事件流(事件冒泡和事件捕获)、事件委托、L0和L2注册等相关概念及用法
Selenium元素定位方法总结
软件代码签名证书怎么申请
【无标题】
从零开始的循环之旅(上)
为什么四个字节的float表示的范围比八个字节的long要广
PAT甲级 1143 最低公共祖先
PAT Class A 1145 Hash - Average Lookup Time
2022-07-29 第六小组 瞒春 学习笔记
对象和类总结
【QMT】给QMT量化交易软件安装和调用第三方库(举例通达信pytdx,MyTT,含代码)
vite.config.ts 引入 `path` 模块注意点!
为什么float4个字节比long8个字节所表示的数值范围广
机械键盘失灵
为什么四个字节的float表示的范围比八个字节的long要广?
2022-07-16 第五小组 瞒春 学习笔记
加载事件的用法