1 条题解
-
0

#include <cstdio> const int M = 5005; #define int long long #define db double int read() { int x=0,f=1;char c; while((c=getchar())<'0' || c>'9') {if(c=='-') f=-1;} while(c>='0' && c<='9') {x=(x<<3)+(x<<1)+(c^48);c=getchar();} return x*f; } int n,m,k;db b[M],c[M],s,ans; signed main() { n=read();m=read();s=read(); for(int i=1;i<=n;i++) { int x=read(); b[++k]=x;c[k]=1; while(k>1 && b[k]*c[k-1]<=b[k-1]*c[k]) { b[k-1]+=b[k]; c[k-1]+=c[k]; k--; } } for(int i=k;i>=1;i--) { if(m*c[i]<=s) { ans+=b[i]*m; s-=m*c[i]; } else { ans+=b[i]*(s/c[i]); break; } } printf("%.8f\n",ans); }
- 1
信息
- ID
- 9200
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者