• L2-015. 互评成绩


    L2-015. 互评成绩

    时间限制
    250 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

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

    输入格式:

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

    输出格式:

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

    输入样例:
    6 5 3
    88 90 85 99 60
    67 60 80 76 70
    90 93 96 99 99
    78 65 77 70 72
    88 88 88 88 88
    55 55 55 55 55
    
    输出样例:
    87.667 88.000 96.000

    模型:
    vector<int> v[10002];存储n个学生成绩信息
    vector<double> score;所有学生最终成绩
     
    #include "cstdio"
    #include "vector"
    #include "algorithm"
    using  namespace std;
    int main()
    {
        int n,m,k,x,sum;
        vector<int> v[10002];
        vector<double> score;
        while(~scanf("%d%d%d",&n,&k,&m)&&n){
            for(int i=0;i<n;i++){
                for(int j=0;j<k;j++){
                    scanf("%d",&x);
                    v[i].push_back(x);
                    sort(v[i].begin(),v[i].end());
                }
                sum=0;
                for(__typeof(v[i].begin())it=v[i].begin()+1;it+1!=v[i].end();it++){
                    sum+=*it;
                }
                score.push_back((double)sum/(k-2));
            }
            sort(score.begin(),score.end());
            int c=1;
            for(__typeof(score.begin())it=score.begin()+score.size()-m;it!=score.end();it++){
                if(c==1)
                    printf("%.3lf",*it),c++;
                else
                    printf(" %.3lf",*it);
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    指针、字符串、数组操作
    字符串转换为数字(str2int)
    新的,开始。
    Hello, World.
    Go语言趣学指南lesson1
    hdoj2058
    poj2378
    hdoj1233
    poj2398
    hdoj1392
  • 原文地址:https://www.cnblogs.com/kimsimple/p/6533281.html
Copyright © 2020-2023  润新知