【深基4.习9】打分
题目描述
现在有 n ( n ≤ 1000 ) n(n \le 1000) n(n≤1000) 位评委给选手打分,分值从 0 0 0 到 10 10 10。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 2 2 2 位小数。
输入格式
第一行输入一个正整数 n n n,表示有 n n n 个评委。
第二行输入 n n n 个正整数,第 i i i 个正整数表示第 i i i 个评委打出的分值。
输出格式
输出一行一个两位小数,表示选手的最后得分。
样例 #1
样例输入 #1
5
9 5 6 8 9
样例输出 #1
7.67
提示
数据保证, 3 ≤ n ≤ 1000 3 \leq n \leq 1000 3≤n≤1000,每个评委打出的分值为为 0 0 0 到 10 10 10(含 0 0 0 与 10 10 10)之间的整数。
思路
对链表进行排序,去头去尾后求平均值。
AC代码
#include <iostream>
#include <list>
#define AUTHOR "HEX9CF"
using namespace std;
int main()
{
list<int> li;
int n;
int sum;
double avg;
cin >> n;
for (int i = 0; i < n; i++)
{
int t;
cin >> t;
li.push_back(t);
}
li.sort();
li.pop_front();
li.pop_back();
sum = 0;
while (!li.empty())
{
int t;
t = li.back();
sum += t;
li.pop_back();
}
avg = (double)sum / (n - 2);
printf("%.2f", avg);
return 0;
}