1 solutions

  • 0
    @ 2026-2-9 19:17:31
    #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(i==1||a[i]>a[maxid])
    		{
    			maxid=i;
    		}
    		if(i==1||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(i==maxid||i==minid) continue; //如果是最大值或最小值所在的位置,那么就继续 
    		double t=abs(a[i]-ave); //计算当前误差 
    		if(t>res) //保留最大差值 
    		{
    			res=t;
    		}
    	}
    	cout<<fixed<<setprecision(2)<<ave<<" "<<res;
    	return 0;
    }
    
    • 1

    Information

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