​传送门​​ 思路:让求操作之后平均数的最大值,可以维护一个最大值,每次比较让求的平均数。最后输出最大的即可。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<queue>
#include<cmath>
#include<cctype>
#include<stack>
#include<map>
#include<string>
#include<cstdlib>
#define ll long long
#define N 100010
using namespace std;
const int maxn = 100000 + 10;
double a[maxn];
int main()
{
ll n,k,m;//ans1,ans;
cin>>n>>k>>m;//n是元素个数,k是单个元素可用,m是总的/
double sum=0;
double maxx,ans1,ans;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
sort(a+1,a+n+1);//排序每次减最小
ans1=(sum+min(n*k,m))/n;
for(int i=0;i<n&&i<=m,i++)
{
sum-=a[i];
ans=(sum+min(k*(n-i),(m-i)))/(n-i);
ans1=max(ans1,ans);
}
printf("%.20lf\n",(double)(ans1));
return 0;
}