【洛谷 P5726】【深基4.习9】打分(链表+循环)

【深基4.习9】打分

题目描述

现在有 n ( n ≤ 1000 ) n(n \le 1000) n(n1000) 位评委给选手打分,分值从 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 3n1000,每个评委打出的分值为为 0 0 0 10 10 10(含 0 0 0 10 10 10)之间的整数。

思路

对链表进行排序,去头去尾后求平均值。

AC代码

#include 
#include 
#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;
}

你可能感兴趣的:(数据结构与算法,链表,数据结构)