60分求大佬纠错

B2095 白细胞计数

chen__pengyu @ 2024-09-21 16:58:56

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    double a[1000],s1=0,s2=0,mx=-1e9,mi=1e9;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        s1+=a[i];
    }
    sort(a+1,a+1+n);
    for(int i=2;i<n;i++){
        s2+=a[i];
        mx=max(a[i],mx);
        mi=min(a[i],mx);
    }
    double one=(double)s1/n;
    double two=(double)s2/(n-2);
    printf("%.2lf ",two);
    printf("%.2lf",max(mx-two,two-mi));
    return 0;
}

by chen__pengyu @ 2024-09-21 16:59:51

求纠错qvq


by yuhanlinluogu @ 2024-09-21 17:37:47

@chen__pengyu 对你的代码进行了小幅调整:

#include<iostream>
#include<algorithm>
#include<math.h>
//头文件都没什么
using namespace std;
int main(){
    int n;
    double a[1000],arg=0,ans=0;
  //源代码中无用变量很多,故删去冗余
    cin>>n;
    for(int i=0;i<n;++i)cin>>a[i];
    sort(a,a+n);
    for(int i=1;i<n-1;++i)
        arg+=a[i]/(n-2);
  //这一步可能写的不好,可以加完之后再外面一起除以(n-2)
    for(int i=1;i<n-1;++i)
        ans=max(ans,fabs(arg-a[i]));
    printf("%.2lf %.2lf",arg,ans);
    return 0;
}

答题思路还是一样的。 楼主代码水平不错啊!尤其是那个sort的应用,让我很有几分震惊


by chen__pengyu @ 2024-09-22 09:40:20

@yuhanlinluogu 谢谢,已关


|