#include <bits/stdc++.h>
using namespace std;
const int MAXN = 207;
struct stc {
  int a;
  double p;
};
int i, j, k, n, m, l, t, x, y, tmp;
stc s[MAXN];
double dp[MAXN][MAXN][MAXN];
double ans;
bool operator<(const stc &a, const stc &b) { return (a.a > b.a); }
int main() {
  while (cin >> n >> l >> m) {
    memset(dp, 0, sizeof(dp));
    ans = 0;
    for (i = 1; i <= n; i++) {
      cin >> s[i].p;
      s[i].p /= 100;
    }
    for (i = 1; i <= n; i++) {
      cin >> s[i].a;
    }
    sort(s + 1, s + n + 1);
    dp[0][0][m] = 1;
    for (i = 1; i <= n; i++) {
      for (k = 0; k < MAXN; k++) {
        dp[i][0][k] = dp[i - 1][0][k] * (1 - s[i].p);
      }
      for (j = 1; j <= i; j++) {
        for (k = 0; k < MAXN; k++) {
          if (s[i].a > 0) {
            tmp = min(MAXN - 1, k + s[i].a);
            dp[i][j][tmp] += dp[i - 1][j - 1][k] * s[i].p;
          } else {
            if (k > 0) {
              dp[i][j][k - 1] += dp[i - 1][j - 1][k] * s[i].p;
            }
          }
          dp[i][j][k] += dp[i - 1][j][k] * (1 - s[i].p);
        }
      }
    }
    for (j = l; j <= n; j++) {
      for (k = 0; k < MAXN; k++) {
        ans += dp[n][j][k];
      }
    }
    printf("%.10f\n", ans);
  }
  return 0;
}
