提交时间:2021-04-03 14:40:54

运行 ID: 6547

#include <bits/stdc++.h> #define int long long using namespace std; int n,a[100010],pre[100010]; double ans; double f(int x,int mid){ return (double)((pre[n]-pre[n-x])+(pre[mid]-pre[mid-x-1]))/(double)(x*2+1)-(double)a[mid]; } signed main(){ scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } sort(a+1,a+1+n); for(int i=1;i<=n;i++){ pre[i]=pre[i-1]+a[i]; } for(int i=1;i<=n;i++){ int l=1,r=min(i-1,n-i); int num=0; while(l<=r){ int mid=(l+r)/2; if(f(mid,i)>=f(mid-1,i)) l=mid+1,num=mid; else r=mid-1; } ans=max(ans,f(num,i)); } printf("%.4f",ans); return 0; }