题目
原题链接:B. Urbanization
题意
有n个居民,每个人具有自身的财富值,先要分成两座城市,分别有n1和n2人。问怎么分才能让两座城市的平均财富值之和最大。
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,n1,n2,s[100000];
cin>>n>>n1>>n2;
for(int i=0;i<n;i++){
cin>>s[i];
}
sort(s,s+n);
double sum1=0,sum2=0;
int i=n-1,maxx=max(n1,n2),minn=min(n1,n2);
while(minn--){
sum1+=s[i--];
}
while(maxx--){
sum2+=s[i--];
}
maxx=max(n1,n2),minn=min(n1,n2);
printf("%.8lf\n",sum1/(minn*1.0)+sum2/(maxx*1.0));
return 0;
}
网友评论