https://vjudge.net/contest/334728#problem/A
题目也可以找上面的网址 Average Superhero Gang Power
第一张wrong answer
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
double s[10000007];
long long a[1000005];
int main()
{
int n,k,m,ans=0,p=0;//英雄数量,可以操作某个英雄的最次数,总的最大操作次数
cin>>n>>k>>m;
for(int i=1;i<=n;i++){cin>>a[i];ans+=a[i];}
sort(a+1,a+1+n);
a[n+1]=0;
int z=min(n,m);
for(int i=0;i<=z;i++)//i指删除数量
{
s[i]=ans+min((long long )(m-i),(long long )k*(n-i));
s[i]-=p;
p=p+a[i+1];
if(i==n)s[i]=0;
else s[i]=s[i]/(n-i);
}
sort(s,s+z+1);
printf("%0.20f",s[z]);
}
第二张 AC
#include <iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long LL;
int arr[1000006];
double ans;
int main() {
int n, k, m;
scanf("%d%d%d", &n, &k, &m);
LL sum = 0;
for (int i=1;i<=n;i++)
{
scanf("%d", &arr[i]);
sum += arr[i];
}
sort(arr + 1, arr + 1 + n);
for (int i=0;i<n&&i<=m;i++)
{
sum -= arr[i];
ans = max(ans, (sum + min(1LL * m - i, 1LL * k * (n - i))) * 1.0 / (n - i));
}
printf("%0.20f", ans);
return 0;
}