AcWing 1235. 付账问题
原题链接
中等
作者:
sy123
,
2021-01-10 21:22:12
,
所有人可见
,
阅读 377
#include<bits/stdc++.h>
using namespace std;
int n,s;
int a[500010];
int main(){
cin>>n>>s;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
double res=s*1.0/n;
double k=res;
int ans;
for(int i=0;i<n;i++){
if(a[i]<res){
s-=a[i];
res=s*1.0/(n-1-i);//要乘1.0
}
else{
ans=i;
break;
}
}
double t=0;
for(int i=0;i<ans;i++){
t+=(a[i]-k)*(a[i]-k);
}
for(int i=ans;i<n;i++){
t+=(res-k)*(res-k);
}
printf("%.4lf",sqrt(t/n));
return 0;
}