提交时间:2021-04-03 10:57:38

运行 ID: 6523

#include<bits/stdc++.h> using namespace std; #define ll long long const ll N=200005; ll n,a[N],cnt[N]; ll read(){ ll s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') w=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ s=(s<<1)+(s<<3)+ch-'0'; ch=getchar(); } return s*w; } double ans; // //void dfss(int x,int num,int sum,int mid,int lmid,int lch){ // if(num!=0) cout<<sum<<" "<<num<<" "<<mid<<"\n"; // if(x>n){ // if(num==0) return; // if(num%2==1){ // ans=mmax(sum*1.0/(num*1.0)-a[mid]*1.0,ans); // } // else{ // ans=mmax(sum*1.0/(num*1.0)-(double)((a[mid]*1.0+a[lmid]*1.0)/2),ans); // } // return; // } // if(num%2==0) dfss(x+1,num+1,sum+a[x],lch,mid,x); // else dfss(x+1,num+1,sum+a[x],mid,lmid,x); // dfss(x+1,num,sum,mid,lmid,lch); // //} void subtask1(int x,int num,int sum){ if(x>n){ if(num==0) return; sort(cnt+1,cnt+num+1); double mid; if(num%2==0){ mid=(double)(cnt[num/2]+cnt[num/2+1])/2; } else mid=cnt[num/2+1]; ans=max((double)sum/(double)num-mid,ans); return; } cnt[num+1]=a[x]; subtask1(x+1,num+1,sum+a[x]); subtask1(x+1,num,sum); } int main(){ n=read(); for(int i=1;i<=n;i++) a[i]=read(); sort(a+1,a+n+1); if(n>0){ subtask1(1,0,0); printf("%.4f",ans); return 0; } return 0; }