0
点赞
收藏
分享

微信扫一扫

1235. 付账问题 (贪心

王栩的文字 2022-04-06 阅读 49

添加链接描述

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int N=5e5+9;
double arr[N],res[N];
signed main(){
    int n,s;
    cin>>n>>s;
    double avg=1.0*s/n;
    for(int i=1;i<=n;i++){
        cin>>arr[i];
    }
    sort(arr+1,arr+1+n);
    double sum=0;
    for(int i=1;i<=n;i++){
        if(avg>arr[i]){
            res[i]=arr[i];
            sum+=arr[i];
            avg=(s-sum)/(n-i);
        }
        else {
            sum+=avg;
            res[i]=avg;
        }
        
    }
    // avg=0;
    // for(int i=1;i<=n;i++){
    //     // avg+=res[i];
    //     cout<<res[i]<<"\n";
    // }
    avg=1.0*s/n;
    double ans=0;
    for(int i=1;i<=n;i++){
        ans+=(res[i]-avg)*(res[i]-avg);
    }
    ans=sqrt(ans*1.0/n);
    printf("%.4lf",ans);


    return 0;
}
举报

相关推荐

0 条评论