付账问题
题目 付账问题
思路分析
代码实现
#include<bits/stdc++.h>
using namespace std;
typedef long double LD;
const int N=5e5+10;
int a[N];
int n;
LD s;
int main()
{
cin>>n>>s;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
LD avg=s/n,cur_avg=avg,sum=0;
for(int i=0;i<n;i++){
if(a[i]<cur_avg){
s-=a[i];
sum+=(avg-a[i])*(avg-a[i]);
cur_avg=s/(n-i-1);
}
else
sum+=(avg-cur_avg)*(avg-cur_avg);
}
printf("%.4Lf",sqrt(sum/n));
return 0;
}
💬 评论