输入样例:
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
源代码:
#include<iostream>
#include<vector>
#include<algorithm>
#include<iomanip>
using namespace std;
bool cmp(int a,int b) //设置int类型cmp函数,递减排序
{
return a>b;
}
bool cmp_1(double a,double b) //设置double类型cmp函数,递增排序
{
return a<b;
}
int main()
{
int n,k,m;
cin>>n>>k>>m;
vector<int> vec[n];//存入每个人的成绩
vector<double> vec_1;//存入每个人最后成绩
for(int i=0;i<n;i++)
{
int sum=0; //定义总成绩
double aver=0; //定义平均成绩
for(int j=0;j<k;j++)
{
int t;
cin>>t;
vec[i].push_back(t); //将每个人评的成绩输入
sum+=t; //累加总成绩
}
sort(vec[i].begin(),vec[i].end()); //对成绩排序
sum=sum-vec[i][0]-vec[i][k-1]; //减去最高分和最低分
aver=sum/(k*1.0-2); //求出最后的成绩
vec_1.push_back(aver); //输入
}
sort(vec_1.begin(), vec_1.end(), cmp_1); //对每个人的最终成绩排序
for(int i=vec_1.size()-m;i<vec_1.size();i++) //输出m个非递减序列
{
cout<<fixed<<setprecision(3)<<vec_1[i];
if(i!=vec_1.size()-1)
cout<<" ";
}
return 0;
}
9, 8, 7, 6, 5:递减排列。
1,2,3,3,4,5,8,8:非递减排列,