#include <bits/stdc++.h>
using namespace std;
double dp[201][201][201];
vector<pair<int, int> > v;
int n, l;
double solve(int i, int j, int k) {
  double &res = dp[i][j][k];
  if (res + 1. > 1e-9) return res;
  if (i == n) {
    if (j >= l) return res = 1.;
    return res = 0;
  }
  res = 0;
  if (v[i].first == -1) {
    res = (100. - v[i].second) / 100. * solve(i + 1, j, k);
    if (k) res += (double)v[i].second / 100. * solve(i + 1, j + 1, k - 1);
  } else {
    res = (100. - v[i].second) / 100. * solve(i + 1, j, k);
    res += (double)v[i].second / 100. *
           solve(i + 1, j + 1, min(200, k + v[i].first));
  }
  return res;
}
int main() {
  int k;
  cin >> n >> l >> k;
  int p, a;
  for (int i = 0; i < n; i++) {
    cin >> p;
    v.push_back(pair<int, int>(0, p));
  }
  for (int i = 0; i < n; i++) cin >> v[i].first;
  for (int i = 0; i < 201; i++)
    for (int j = 0; j < 201; j++)
      for (int k = 0; k < 201; k++) dp[i][j][k] = -1.;
  sort(v.rbegin(), v.rend());
  double ans = solve(0, 0, k);
  cout.precision(10);
  cout.flags(ios::fixed);
  cout << ans << endl;
  return 0;
}
