PAT 甲级 1137 Final Grading

https://pintia.cn/problem-sets/994805342720868352/problems/994805345401028608

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 0 if G?mid?term??>G?final??, or G?final?? will be taken as the final grade G. Here G?mid?term?? and G?final?? 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 G?p??‘s; the second one contains M mid-term scores G?mid?term??‘s; and the last one contains N final exam scores G?final??‘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 G?p?? G?mid?term?? G?final?? G

If 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 the StudentID‘s are all distinct, and there is at least one qullified student.

Sample Input:

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

Sample Output:

missing 400 -1 99 99
ydjh2 200 98 82 88
dx86w 220 88 81 84
wehu8 300 55 84 84

代码:

#include <bits/stdc++.h>
using namespace std;

int P, M, N;

struct Stu{
    string name;
    int code;
    int mid;
    int fin;
    int score;

    Stu() {
        score = mid = fin = -1;
    }
}stu[10010];

map<string, int> mp;

bool cmp(const Stu& a, const Stu& b) {
    if(a.score != b.score)
        return a.score > b.score;
    else
        return a.name < b.name;
}

int main() {
    int num = 0;
    string id;
    int codddde;
    mp.clear();
    scanf("%d%d%d", &P, &M, &N);
    for(int i = 1; i <= P; i ++) {
        cin >> id >> codddde;
        num ++;
        mp[id] = num;
        stu[num].name = id;
        stu[num].code = codddde;
    }

    for(int i = 1; i <= M; i ++) {
        cin >> id >> codddde;
        if(mp[id])
            stu[mp[id]].mid = codddde;
    }

    for(int i = 1; i <= N; i ++) {
        cin >> id >> codddde;
        if(mp[id]) {
            stu[mp[id]].fin = codddde;

            if(stu[mp[id]].mid > stu[mp[id]].fin)
                stu[mp[id]].score = 0.4 * stu[mp[id]].mid + 0.6 * stu[mp[id]].fin + 0.5;
            else
                stu[mp[id]].score = stu[mp[id]].fin;
        }
    }

    sort(stu + 1, stu + 1 + num, cmp);
    for(int i = 1; i <= num; i ++) {
        if(stu[i].score >= 60 && stu[i].code >= 200) {
            cout << stu[i].name << " " << stu[i].code;
            printf(" %d %d %d\n", stu[i].mid, stu[i].fin, stu[i].score);
        }

    }
    return 0;
}

  孙燕姿越听越好听 最近产量好低啊 过年使我颓废 不可以的!

原文地址:https://www.cnblogs.com/zlrrrr/p/10345527.html

时间: 2024-10-30 21:24:16

PAT 甲级 1137 Final Grading的相关文章

1137 Final Grading (25 分)

1137 Final Grading (25 分) 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 program

PAT 1137 Final Grading

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

1137 Final Grading

题意:排序题. 思路:通过unordered_map来存储考生姓名与其成绩信息结构体的映射,成绩初始化为-1,在读入数据时更新各个成绩,最后计算最终成绩并把符合条件的学生存入vector,再排序即可.需要注意的是,计算最终成绩时记得"G must be rounded up to an integer".关于取整函数,总结在这里. 代码: #include <iostream> #include <string> #include <unordered_m

PAT-1137. Final Grading (25)

1137. Final Grading (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue For a student taking the online course "Data Structures" on China University MOOC (http://www.icourse163.org/), to be qualified for a certificate, he/sh

PAT甲级1005 Spell It Right

题目:PAT甲级 1005 题解:水题.看到题目的第一时间就在想一位一位的mod,最后一加一转换就完事了.结果看到了N最大为10的100的次方,吓得我赶紧放弃这个想法... 发现碰到这种情况用字符串十分好用,这道题应该考察的就是这一点.大致思路就是把数字的每一位放到字符串中,然后通过ASCII码得到每一位的相加结果num,然后把num一位一位的放到stack中,使用stack是因为它先进先出的特性,最后输出就行了. 代码: 1 #include<cstdio> 2 #include<qu

PAT甲级考前整理

终于在考前,刷完PAT甲级130道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种境界.PAT甲级题目总的说卡题目的比较多,卡测试点的比较少,有些题目还会有题意混淆,这点就不吐槽了吧.静下心来耍这130道题,其实磨练的是一种态度与手感,养成的是一种习惯.热爱AC没有错!! 130道题目主要的考点: 1.排序:快速排序,直接插入排序,希尔排序,分治排序,堆排序. 2.图论:拓扑排序.最短路径.深度搜索.广度搜索. 3.树:树的遍历.完全二叉树.AVL. 4.其他:并查集,模拟,哈希.背包.

PAT甲级考试题库1001 A+B Format 代码实现及相关知识学习

准备参加九年九月份的PAT甲级证书考试,对网站上的题目进行总结分析: 1001题 A+B Format (20 分) Calculate a+b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits). 计算a+b的值并以一定格式输出其和sum(数字需要

PAT甲级专题|最短路

PAT甲级最短路 主要算法:dijkstra 求最短最长路.dfs图论搜索. 1018,dijkstra记录路径 + dfs搜索路径最值 25分,错误点暂时找不出.. 如果只用dijkstra没法做,只能得20分 #include<bits/stdc++.h> using namespace std; const int inf = 0x3f3f3f3f; const int maxn = 510; int cmax,n,ter,m; int caps[maxn]; int g[maxn][m

【PAT甲级】1070 Mooncake (25 分)(贪心水中水)

题意: 输入两个正整数N和M(存疑M是否为整数,N<=1000,M<=500)表示月饼的种数和市场对于月饼的最大需求,接着输入N个正整数表示某种月饼的库存,再输入N个正数表示某种月饼库存全部出手的利润.输出最大利润. trick: 测试点2可能包含M不为整数的数据.(尽管题面说明M是正整数,可是根据从前PAT甲级题目的经验,有可能不是整数.....) 代码: #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using names