CodeForces - 735B Urbanization
题意:两个城市,第一个城市去n1个人,第二个城市去n2个人,每个人都有一定的资产,输出两个城市的平均资产最大和
思路:贪心,对人的资产先从大到小排序,假设n1小,就把前n1大的人去第一个城市,就是让资产高的人去容纳人数较小的城市
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100100];
bool cmp(int a,int b)
{
return a>b;
}
int main(void)
{
int n,fir,sec;
scanf("%d%d%d",&n,&fir,&sec);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1,cmp);
int Min=min(fir,sec);
int Max=max(fir,sec);
long long suma=0,sumi=0;
int k=0;
for(int i=1;i<=Min;i++)
suma+=a[i];
int i=fir+sec;
while(k!=Max)
{
sumi+=a[i];
k++;
i--;
}
//printf("%d %d\n",suma,sumi);
double ans=double(suma)/double(Min)+double(sumi)/double(Max);
printf("%lf\n",ans);
return 0;
}