2457: 【普及-】【P5738】歌唱比赛
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:33
解决:13
题目描述
名同学参加歌唱比赛,并接受 名评委的评分,评分范围是 到 分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下 个评分的平均数。请问得分最高的同学分数是多少?评分保留 位小数。
输入
第一行两个整数 。
接下来 行,每行各 个整数,表示得分。
接下来 行,每行各 个整数,表示得分。
输出
输出分数最高的同学的分数,保留两位小数。
样例输入 复制
7 6
4 7 2 6 10 7
0 5 0 10 3 10
2 6 8 4 3 6
6 3 6 7 5 8
5 9 3 3 8 1
5 9 9 3 2 0
5 8 0 4 1 10
样例输出 复制
6.00
提示
/* stat 函数的参数int a[] 指接收int 类型的数组名。 传递数组名作为参数只是传递数组在内存中的地址。 数组a[] 其实就是全局变量s[] 的别名,如果在函数中改变a[] 中的一项值,s[] 也会相应地改变。 stat 函数中的变量m、maxscore、sum 等在函数内部定义和使用的,被称为局部变量。函数里的m 变量和外面的m 没有关系。 */ #include<bits/stdc++.h> using namespace std; int s[25],n,m,maxsum; //建议大数组(超过1000个元素)定义为全局变量 void stat(int a[],int m) { int maxscore=0,minscore=10,sum=0; for(int i=0;i<m;i++) { maxscore=max(a[i],maxscore);minscore=min(a[i],minscore); sum+=a[i]; } maxsum=max(maxsum,sum-maxscore-minscore); //记录剩下的n-2评分综合 } int main(){ scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) scanf("%d",&s[j]); stat(s,m); } printf("%.2f",double(maxsum)/(m-2)); return 0; }