提交时间:2021-04-03 10:03:52

运行 ID: 6519

#include<bits/stdc++.h> using namespace std; long long n; double a[200000]; double p,z; double ans; long long l,e; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; }sort(a+1,a+n+1); p=a[1]/2+a[n]/2; z=a[1]/2+a[n]/2; ans=p-z; l=1; e=n; for(int i=2;i<=n/2+1;i++){ double ii=i; if(l>=e) break; p=(p*(ii-1)*2)/((ii-1)*2+1)+a[l+1]/((ii-1)*2+1); z=a[l+1]; if(p-z<ans) break; ans=p-z; l++; double p1=0,p2=0,z1=0,z2=0; p1=p*((ii-1)*2+1)/(ii*2)+a[l+1]/(ii*2); z1=(a[l]+a[l+1])/2; p2=p*((ii-1)*2+1)/(ii*2)+a[e-1]/(ii*2); z2=(a[l]+a[e-1])/2; if((p1-z1)<ans&&(p2-z2)<ans) break; if((p1-z1)>(p2-z2)){ ans=p1-z1; l++; }else{ ans=p2-z2; e--; } }printf("%.4f",ans); return 0; }