#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int dX[] = {0, 0, 1, -1};
int dY[] = {1, -1, 0, 0};
double dp[201][201][201], P[201];
int n, l, h;
vector<pair<int, double> > v;
double solve(int idx, int rem, int bags) {
  if (bags < 0) return 0;
  if (idx == n) return (rem >= l);
  if (dp[idx][rem][bags] == dp[idx][rem][bags]) return dp[idx][rem][bags];
  return dp[idx][rem][bags] =
             v[idx].second *
                 solve(idx + 1, rem + 1, min(bags + v[idx].first, 200)) +
             (1 - v[idx].second) * solve(idx + 1, rem, bags);
}
int main() {
  scanf("%d", &n);
  scanf("%d", &l);
  scanf("%d", &h);
  int x;
  for (int i = 0; i < n; ++i) scanf("%d", &x), v.push_back({0, x / 100.0});
  for (int i = 0; i < n; ++i) scanf("%d", &v[i].first);
  sort(v.rbegin(), v.rend());
  memset(dp, -1, sizeof(dp));
  printf("%.6f", solve(0, 0, h));
  return 0;
}
