zhangshengzhi @ 2024-11-16 16:11:38
#include<bits/stdc++.h>
using namespace std;
double a[333],b[333],sum;
int main()
{
int n,s;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
int max=a[1];
int min=a[1];
for(int i=2;i<=n;i++)
if(a[i]>max)
{
max=a[i];
s=i;
}
for(int i=s;i<=n;i++) a[i]=a[i+1];
for(int i=2;i<=n-1;i++)
if(a[i]<min)
{
min=a[i];
s=i;
}
for(int i=s;i<=n;i++) a[i]=a[i+1];
n=n-2;
for(int i=1;i<=n;i++) sum=sum+a[i];
sum=sum*1.0/n*1.0;
for(int i=1;i<=n;i++)
{
if(a[i]>sum) b[i]=a[i]-sum;
else b[i]=sum-a[i];
}
double m=b[1];
for(int i=2;i<=n;i++)
if(b[i]>m) m=b[i];
printf("%.2f %.2f",sum,m);
return 0;
}
by iranai @ 2024-11-16 16:15:03
@zhangshengzhi原始想法:你的s是不是该初始化为1啊,否则尤其是求最小值时可能第一个就是最小值,那s就无法更新,就用的是之前最大值时的s