import std.stdio;
import std.conv;
import std.string;
import std.typecons;
import std.algorithm;
import std.array;
import std.range;
import std.math;
import std.regex : regex;
import std.container;
import std.bigint;


void main()
{
  int n, k;
  readf("%s %s\n", &n, &k);
  auto a = readln.chomp.split.to!(int[]);
  auto f = readln.chomp.split.to!(int[]);
  a.sort();
  f.sort!((a,b)=>a > b);

  auto ar = new int[][](n, 3);
  auto pq = BinaryHeap!(int[][])(ar);
  foreach (i; 0..n) {
    auto c = new int[](2);
    c[0] = a[i] * f[i];
    c[1] = f[i];
    pq.insert(c);
  }

  while (k--) {
    auto x = pq.front;
    pq.popFront;
    if (x[0] != 0) {
      x[0] -= x[1];
    }
    pq.insert(x);
  }
  pq.front[0].writeln;
} 
