使用双端数组为什么只过了一个点?
查看原帖
使用双端数组为什么只过了一个点?
711574
jingchuan_Hou楼主2022/4/21 23:16
/*
 * @Name: hjc  Email : jchuan_Hou@163.com
 * @Data: 2022年4月21日21:42:29 
 * @Describe: 歌唱比赛
 */

#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
#include <iomanip>

using namespace std;

int n;//参赛人数
int m;//评委人数

bool Mysort(int v1, int v2)
{
    return v1 > v2;
}


int main()
{
    cin >> n >> m;
    vector<double> v;
    for (int i = 0; i < n; i++)
    {
        int sum = 0;
        double aver;//平均分
        int score;//打分
        deque<int> d;//双端数组便于淘汰最大最小值
        for (int j = 0; j < m; j++)
        {
            cin >> score;
            sum += score;
            d.push_back(score);
        }
        sort(d.begin(), d.end());//从小到大排序
        d.pop_back();//淘汰最大的
        d.pop_front();//淘汰最小的
        aver = sum / (m * 1.0);//计算均分
        v.push_back(aver);
    }
    sort(v.begin(), v.end(), Mysort);
    
    vector<double>::iterator it = v.begin();
    
    cout << fixed << setprecision(2) << *it << endl;

    return 0;
}



2022/4/21 23:16
加载中...