https://www.nowcoder.com/acm/contest/143/A
二分答案 转为判定性问题 然后同乘分母后移项 再排序 最后取前(n-k)小是当前最优解 看是都符合条件 复杂度n*logn*logn
using namespace std;
struct node
{
  double s;
  double c;
  double val;
};
node ary[100010];
int n,k;
bool cmp(node n1,node n2)
{
  return n1.s*(n1.c-n1.val)>n2.s*(n2.c-n2.val);
}
bool judge(double val)
{
  double sum;
  int i;
  for(i=1;i<=n;i++) ary[i].val=val;
  sort(ary+1,ary+n+1,cmp);
  sum=0.0;
  for(i=1;i<=n-k;i++)
  {
    sum+=ary[i].s*(ary[i].c-ary[i].val); 
  }
  if(sum<0.0) return false;
  else return true;
}
int main()
{
  double l,r,m,ans;
  int i;
  while(scanf("%d%d",&n,&k)!=EOF)
  {
    for(i=1;i<=n;i++) scanf("%lf",&ary[i].s);
    for(i=1;i<=n;i++) scanf("%lf",&ary[i].c);
    l=0.0,r=1000.0;
    while(r-l>eps)
    {
      m=(l+r)/2.0;
      if(judge(m))
      {
        ans=m;
        l=m;
      }
      else
      {
        r=m;
      }
    }
    printf("%.6f\n",ans);
  }
  return 0;
}
                










