#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2010;
long double dp[MAXN];
long double pa[MAXN], pb[MAXN], pab[MAXN];
int n, a, b;
int uk_a, uk_b;
const long double diff = 0.0000001;
void solve(double X, double Y) {
  memset(dp, 0, sizeof dp);
  uk_a = 0;
  uk_b = 0;
  for (int i = (1); i < (n + 1); i++) {
    int o = 0;
    dp[i] = dp[i - 1];
    if (dp[i] < dp[i - 1] + pa[i] - Y) {
      dp[i] = dp[i - 1] + pa[i] - Y;
      o = 1;
    }
    if (dp[i] < dp[i - 1] + pab[i] - X - Y) {
      dp[i] = dp[i - 1] + pab[i] - X - Y;
      o = 3;
    }
    if (dp[i] < dp[i - 1] + pb[i] - X) {
      dp[i] = dp[i - 1] + pb[i] - X;
      o = 2;
    }
    if (o & 1) uk_a++;
    if (o & 2) uk_b++;
  }
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> a >> b;
  for (int i = (0); i < (n); i++) cin >> pa[i + 1];
  for (int i = (0); i < (n); i++) cin >> pb[i + 1];
  for (int i = (0); i < (n); i++)
    pab[i + 1] = pa[i + 1] + pb[i + 1] - pa[i + 1] * pb[i + 1];
  long double la = 0, ha = 1, lb = 0, hb = 1;
  for (int smece1 = (0); smece1 < (50); smece1++) {
    double ma = (la + ha) / 2;
    lb = 0;
    hb = 1;
    for (int smece2 = (0); smece2 < (50); smece2++) {
      long double mb = (lb + hb) / 2;
      solve(mb, ma);
      if (uk_b > b) {
        lb = mb + diff;
      } else {
        hb = mb;
      }
    }
    solve(lb, ma);
    if (uk_a > a) {
      la = ma + diff;
    } else {
      ha = ma;
    }
  }
  solve(lb, la);
  cout << fixed << setprecision(10) << dp[n] + la * a + lb * b << "\n";
  return 0;
}
