PTA互评成绩

一、题目描述

 

 二、解题思路

  对于每个成绩排个序,去掉最高和最低就行了,然后把平均分放入vector就行了。再把vector排个序输出

三、代码实现

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 int n,m,k;
 4 double ave[10010];
 5 double a[40];
 6 bool cmp(double p,double k)
 7 {
 8     return p > k;
 9 }
10 bool cmp1(double p,double k)
11 {
12     return p < k;
13 }
14 int main()
15 {
16     cin >> n >> m >> k;
17     for(int i = 1;i <= n;i++){
18         double sum = 0;
19         for(int j = 1;j <= m;j++)
20             cin >> a[j];
21         sort(a + 1,a + 1 + m,cmp);
22         for(int j = 2;j <= m - 1;j++)
23             sum += a[j];
24         ave[i] = sum / (m - 2);
25     }
26     sort(ave + 1,ave + n + 1,cmp);
27     vector <double> ans;
28     for(int i = 1;i <= k;i++)
29         ans.push_back(ave[i]);
30     int j = 1;
31     sort(ans.begin(),ans.end(),cmp1);
32     for(auto &u :ans){
33         if(j == k)
34             cout << fixed << setprecision(3) << u;
35         else
36             cout << fixed << setprecision(3) << u << ' ';
37         j++;
38     }
39     return 0;
40 }
posted @ 2022-03-19 15:37  scannerkk  阅读(103)  评论(0)    收藏  举报