Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
6512 | 18级李灏冬 | 2021北京队选拔模拟赛1-A | C++ | 运行超时 | 30 | 1000 MS | 25256 KB | 1405 | 2021-04-03 08:59:41 |
#include<bits/stdc++.h> #define int long long #define LD long double using namespace std; const int inf=0x3f3f3f3fll; int read(){ int res=0; int f=1; char ch=getchar(); while(ch<'0' || ch>'9'){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0' && ch<='9'){ res=res*10+ch-'0'; ch=getchar(); } return res*f; } void out(int x){ if(x>=10) out(x/10); putchar(x%10+'0'); } void out1(int x){ if(x<0) putchar('-'); out(abs(x)); } void out2(int x){ out1(x); putchar('\n'); } int n; LD a[200005]; LD ans=-2000000009.1; LD que[200005]; int top; LD GetMax(LD a,LD b){ if(a>=b) return a; return b; } void dfs(int x,LD sum,int num){ if(top%2!=0){ LD mem=(sum/((LD)num))-que[top/2+1]; ans=GetMax(ans,mem); } if(top%2==0){ LD mem=(sum/((LD)sum))-(que[top/2]+que[top/2+1])/2.0; ans=GetMax(ans,mem); } for(int i=x+1;i<=n;i++){ int mir=top; que[++top]=a[i]; dfs(i,sum+a[i],num+1); top=mir; } } signed main(){ n=read(); for(int i=1;i<=n;i++){ scanf("%Lf",&a[i]); } for(int i=1;i<=n;i++){ que[++top]=a[i]; dfs(i,a[i],1); top=0; } printf("%.4Lf\n",ans); return 0; }