P8830 [传智杯 #3 练习赛] 评委打分 ----- 简单模拟、使用O2以及printf优化时间
题目描述
小 A 参加一个综艺节目。一共有 n(3 \le n \le 10^6)n(3≤n≤106) 名评委参与打分(分数范围是 0 到 100 的整数),每个评委依次亮出自己的得分。
为了节目效果,要求从第三个评委开始,每当第 ii 个评委给出打分后,立刻计算出出这个选手在前 ii 名评委的打分中,去掉一个最高分和一个最低分,剩下 i-1i−1 个评委的平均分,保留 22 位小数。
输入格式
第一行输入一个整数 nn,表示评委人数。
第二行输出 nn 个整数,表示各个评委的打分。
输出格式
输出共 n-2n−2 行,每行表示对应的答案。
输入输出样例
输入 #1
6 11 45 14 19 19 81
输出 #1
14.00 16.50 17.33 24.25
#include <iostream> #include<iomanip> #include <math.h> #include <vector> #include <unordered_set> #include <algorithm> #include <numeric> #include<stdio.h> using namespace std; int main(){ int n, score1, score2, score; int m = 2; cin >> n; //vector<int> vec; cin >> score1; //vec.push_back(score1); cin >> score2; //vec.push_back(score2); n -= 2; int max_score = max(score1, score2); int min_score = min(score1, score2); int sum = score1 + score2; while (n--) { cin >> score; m++; //vec.push_back(score); //int m = vec.size(); double averge = 0.0; max_score = max(max_score, score); min_score = min(min_score, score); //max_score = *max_element(vec.begin(), vec.end()); //min_score = *min_element(vec.begin(), vec.end()); //sum = accumulate(vec.begin(), vec.end(), 0); sum += score; averge = (sum - double(max_score + min_score)) / (m - 2); //cout << fixed << setprecision(2) << averge << endl; printf("%.2f\n", averge); } return 0; }
hello my world
本文来自博客园,作者:slowlydance2me,转载请注明原文链接:https://www.cnblogs.com/slowlydance2me/p/16919080.html