Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
6516 18级张钰晨 2021北京队选拔模拟赛1-A C++ 通过 100 45 MS 3388 KB 1165 2021-04-03 09:27:25

Tests(10/10):


#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=2e5+5,mod=1e9+7,inf=0x3f3f3f3f; inline int read(){ int x=0,f=1,ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-48;ch=getchar();} return x*f; } int n; double ans,a[maxn];ll sum,s[maxn]; double cal_mean(int x,int med){ return ((s[n]-s[n-x])+(s[med]-s[med-x-1]))*1.0/(x*2+1); } int main(){ n=read(); for(int i=1;i<=n;i++)a[i]=read(); sort(a+1,a+1+n); for(int i=1;i<=n;i++)s[i]=s[i-1]+a[i]; for(int i=2;i<n;i++){ // double mean=a[i];sum=a[i]; int mn=min(i-1,n-i); // for(int j=1;j<=mn;j++) // if((a[i-j]+a[n-j+1])/2.0>mean){ // sum+=(a[i-j]+a[n-j+1]); // mean=sum*1.0/(j*2+1); // } int L=1,R=mn,mid=0,cur=0; while(L<=R){ mid=(L+R)/2; if(cal_mean(mid,i)>cal_mean(mid-1,i)){cur=mid;L=mid+1;} else R=mid-1; } ans=max(ans,cal_mean(cur,i)-(s[i]-s[i-1])); } printf("%.4lf\n",ans); return 0; }


测评信息: