题意
总共有 w 克蛋糕,2n 个盘子,第 i 个盘子容量为 ai ,n 个女孩和 n 个男孩,男孩得到的是女孩得到的蛋糕的两倍,求他们得到蛋糕的最大值。
分析
把盘子从小到大排序,然后 女生得到的蛋糕总量是 n*min(最小的盘子,第n+1小的盘子/2,w/(3n))。 答案就是女生得到的蛋糕的3倍。
代码
#include<cstdio> #include<algorithm> using namespace std; int n,a[1000005]; double w,ans; int main(){ scanf("%d%lf",&n,&w); for(int i=0;i<n*2;i++) scanf("%d",&a[i]); sort(a,a+n*2); ans = min(1.5 * n * min(2*a[0], a[n]), w); printf("%lf",ans); return 0; }