zhenghao20220503 @ 2024-11-03 09:31:33
#include <bits/stdc++.h>
using namespace std;
double a[10000000+5];
int main()
{
long long n;
double min=100000000,max=0,ans=0,max1=0,t,s;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
}
for(int i=1;i<=n;i++)
{
if(a[i]!=max && a[i]!=min) ans+=a[i];
}
t=ans/(n-2);
for(int i=1;i<=n;i++)
{
if(a[i]!=max && a[i]!=min) s=abs(a[i]-t);
if(s>max1) max1=s;
}
printf("%.2f",t);
cout<<" ";
printf("%.2f",max1);
return 0;
}
by qiaochu @ 2024-11-03 09:35:52
@zhenghao20220503
#include<bits/stdc++.h>
using namespace std;
//快排
void f(double a[],int l,int r)
{
if(l>r)return;
int i,j,temp,t;
temp=a[l];
i=l;
j=r;
while(i!=j)
{
while(a[j]>=temp && i<j)
{
j--;
}
while(a[i]<=temp && i<j)
{
i++;
}
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[l]=a[i];
a[i]=temp;
f(a,l,i-1);
f(a,i+1,r);
}
int main()
{
int n;
double a[10010],max,ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
f(a,1,n);
for(int i=2;i<n;i++)
{
ans+=a[i];
}
ans/=(n-2);
cout<<fixed<<setprecision(2)<<ans<<" ";
max=abs(ans-a[2]);
for(int i=3;i<n;i++)
{
if(abs(ans-a[i])>max)max=abs(ans-a[i]);
}
cout<<fixed<<setprecision(2)<<max;
}