#1001. CSP 2020 第一轮(初赛)模拟 第 43 题
CSP 2020 第一轮(初赛)模拟 第 43 题
(烧作业)某课作业布置了 个题目,第 题对应的得分是 。作业的总得分的计算方式为去掉作业中得分最小的一个题,剩下其它所有题目得分的平均值。但很不幸小 A 遇到了一场火灾,前 个题目被烧了,无法记录得分。小 A 想知道, 是多少时,可以得到最高的作业得分? 作业被烧了前 页,这时的得分是从第 页到最后一页中,去除最小得分后取平均值。
输入第一行是整数 ,第二行是 个不超过 的非负整数表示 。
输出一行,若干个整数表示答案。如果有多个 ,请依次升序输出。
#include <cstdio>
#include <cmath>
#define min(a,b) (a<b?a:b)
#define MAXN 100002
using namespace std;
int n, k[MAXN], cnt = 0;
int s[MAXN], minScore, sum;
double maxAverage = 0, nowAverage;
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &s[i]);
minScore = s[n];
①;
for(int i = n - 1; i >= 2; i--) {
minScore = min(minScore, s[i]);
②;
nowAverage = ③;
if(nowAverage > maxAverage) {
④
maxAverage = nowAverage;
} else if(fabs(nowAverage - maxAverage) < 1e-6)
⑤;
}
for(int i = cnt; i >= 1; i--)
printf("%d\n", k[i]);
return 0;
}
⑤处应填( )
{{ select(1) }}
k[cnt++]=i;k[++cnt]=i-1;k[cnt++]=n-i;k[cnt]=i;