倒茶,男孩要比女孩多一倍,男孩们喝的相等,女孩们喝的相等
问最多需要倒出多少
巨恶心的一道题目,精度开到1e-12次方以上TL开到1e-12以下WA
好吧,我承认我交了20次,终于把结果测出来了
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<cstdio>
#include<map>
using namespace std;
double a[300030];
int n;double w;
bool fen(double x)
{
int i;
for(i=1;i<=3*n;i++)
{
if(a[i]<x)
return false;
}
return true;
}
int main()
{
int i;
while(scanf("%d%lf",&n,&w)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%lf",&a[i]);
for(i=n+1;i<=2*n;i++)
{
scanf("%lf",&a[i]);
}
sort(a+1,a+1+2*n);
for(i=1;i<=n;i++)
{
a[i+n]/=2;
a[i+2*n]=a[i+n];
}
double beg=0;double endd=w;
double mid;
while(beg+1e-12<endd)
{
mid=(beg+endd)/2;
if(mid*3*n>w)
{
endd=mid;
mid=(beg+endd)/2;
continue;
}
if(fen(mid))
{
beg=mid;
}
else
{
endd=mid;
}
}
mid=mid*3*n;
printf("%.8lf\n",mid);
}
return 0;
}