#include <bits/stdc++.h>
using namespace std;
bool comp1(pair<double, double> p1, pair<double, double> p2) {
  return p1.first > p2.first || p1.first == p2.first && p1.second > p2.second;
}
bool comp2(pair<double, double> p1, pair<double, double> p2) {
  return p1.first - p1.second > p2.first - p2.second ||
         p1.first - p1.second == p2.first - p2.second && p1.first > p2.first;
}
pair<double, double> pp[2048];
pair<double, double> p[2048];
set<pair<double, int> > wa, wb, ca, cb;
double sa, sb;
int n, na, nb;
double kk[2048];
int main() {
  scanf("%d%d%d", &n, &na, &nb);
  for (int i = 0, to = n; i < to; ++i) scanf("%lf", &pp[i].first);
  for (int i = 0, to = n; i < to; ++i) scanf("%lf", &pp[i].second);
  sort(pp, pp + n, comp1);
  double r = 0.;
  for (int i = n; i >= 0; --i) {
    for (int j = 0, to = n; j < to; ++j) p[j] = pp[j];
    sort(p, p + i, comp2);
    wa.clear();
    wb.clear();
    ca.clear();
    cb.clear();
    for (int j = i, to = n; j < to; ++j) cb.insert(make_pair(p[j].second, j));
    for (int j = 0, to = i; j < to; ++j) {
      kk[j] = (1 - p[j].second) * p[j].first;
      ca.insert(make_pair(kk[j], j));
    }
    sa = sb = 0;
    for (int j = 0, to = i; j < to; ++j) sb += p[j].second;
    for (int j = 0, to = i + 1; j < to; ++j) {
      while (!wa.empty() && j + wa.size() > na) {
        sa -= wa.begin()->first;
        ca.insert(*wa.begin());
        wa.erase(wa.begin());
      }
      while (!cb.empty() && i - j + wb.size() < nb) {
        sb += cb.rbegin()->first;
        wb.insert(*cb.rbegin());
        cb.erase(*cb.rbegin());
      }
      while (!ca.empty() && j + wa.size() < na) {
        sa += ca.rbegin()->first;
        wa.insert(*ca.rbegin());
        ca.erase(*ca.rbegin());
      }
      if (i - j + wb.size() <= nb && j + wa.size() <= na) {
        r = max(r, sa + sb);
      }
      if (j != i) {
        sa += p[j].first;
        if (wa.count(make_pair(kk[j], j))) {
          sa -= (1 - p[j].second) * p[j].first;
          wa.erase(make_pair(kk[j], j));
        } else {
          ca.erase(make_pair(kk[j], j));
        }
        sb -= p[j].second;
        cb.insert(make_pair((1 - p[j].first) * p[j].second, j));
      }
    }
  }
  printf("%lf\n", r);
  return 0;
}
