4 solutions

  • 0
    @ 2026-6-13 20:40:33

    #include<bits/stdc++.h> using namespace std; const int N=1e6+10; double a[N]; int main() { int n; cin>>n; int maxid,minid; //最大值最小值所在的位置 double sum=0; for(int i=1;i<=n;i++) { cin>>a[i]; if(i1||a[i]>a[maxid]) { maxid=i; } if(i1||a[i]<a[minid]) { minid=i; } sum+=a[i]; } sum=sum-a[maxid]-a[minid]; //除了最大值和最小值以外的总和 double ave=sum/(n-2); //计算平均值 double res=0; for(int i=1;i<=n;i++) { if(imaxid||iminid) continue; //如果是最大值或最小值所在的位置,那么就继续 double t=abs(a[i]-ave); //计算当前误差 if(t>res) //保留最大差值 { res=t; } } cout<<fixed<<setprecision(2)<<ave<<" "<<res; return 0; }

    Information

    ID
    897
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    (None)
    # Submissions
    351
    Accepted
    67
    Uploaded By