PTA 一 互评成绩

来源:互联网 发布:知峰竹纤维 编辑:程序博客网 时间:2024/04/29 19:41

学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。

输入格式:

输入第一行给出3个正整数N(3 << N \le 10^4104,学生总数)、k(3 \le k \le10,每份作业的评审数)、M\le 20,需要输出的学生数)。随后N行,每行给出一份作业得到的k个评审成绩(在区间[0, 100]内),其间以空格分隔。

输出格式:

按非递减顺序输出最后得分最高的M个成绩,保留小数点后3位。分数间有1个空格,行首尾不得有多余空格。

输入样例:

6 5 388 90 85 99 6067 60 80 76 7090 93 96 99 9978 65 77 70 7288 88 88 88 8855 55 55 55 55

输出样例:

87.667 88.000 96.000

算法思路:排序……

#include<stdio.h>#include<algorithm>#include<vector>using namespace std;int main() {int n, k, m;scanf("%d%d%d", &n, &k, &m);int i, j;vector<float> scores;scores.reserve(k);for (i = 0; i<n; i++){vector<int> st;st.reserve(k);float sum = 0;for (j = 0; j<k; j++) {int x;scanf("%d", &x);sum += x;st.push_back(x);}sort(st.begin(), st.end());sum -= st[0] + st[k - 1];sum /= k - 2;scores.push_back(sum);}sort(scores.begin(), scores.end());i = n - m;printf("%.3f", scores[i++]);for (; i < n; i++) printf(" %.3f", scores[i]);return 0;}


0 0
原创粉丝点击