许多比赛在计算选手得分平均数的时候,都会先去掉一个最高得分,再去掉一个最低得分,这样可以避免极大值与极小值对平均值的影响。
给定?n?个数字 a[1]?,a[2]?,?,a[n]?,表示一个选手获得的分数,请根据上述流程计算选手的最终得分。
注意如果有多个分数并列第一,则只会去掉一个最高分,去掉最低分的情况同理。
第一行:单个整数 n;
第二行:n?个整数表示 a[1]?,a[2]?,?,a[n]?。
一个浮点数:表示最终得分,四舍五入保留两位小数。
5
100 1 20 30 40
30.00
#include <bits/stdc++.h>
using namespace std;
int n, a[100005];
bool cmp(int x, int y) {
return x < y;
}
int mx, mi;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + 1 + n, cmp);
mx = a[n];
mi = a[1];
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += a[i];
}
cout << fixed << setprecision(2) << (sum - mx - mi) * 1.0 / (n - 2);
return 0;
}