#include <bits/stdc++.h>
using namespace std;
const int N = 201;
int i, j, n, m, k, l;
pair<int, int> a[N];
double dp[N][N], dpx[N][N];
int main() {
  int K;
  scanf("%d%d%d", &n, &l, &K);
  for (i = 0; i < n; i++) scanf("%d", &a[i].second);
  for (i = 0; i < n; i++) {
    scanf("%d", &a[i].first);
    a[i].first *= -1;
  }
  sort(a, a + n);
  for (i = 0; i < n; i++) {
    swap(a[i].first, a[i].second);
    a[i].second *= -1;
  }
  dp[0][K] = 1.;
  for (i = 0; i < n; i++) {
    double p = a[i].first / 100.;
    double q = 1. - p;
    if (a[i].second == -1) {
      for (j = 0; j < n; j++)
        for (k = 0; k < N; k++) {
          if (k > 0) dpx[j + 1][k - 1] += dp[j][k] * p;
          dpx[j][k] += dp[j][k] * q;
        }
    } else {
      for (j = 0; j < n; j++)
        for (k = 0; k < N; k++) {
          int kk = min(200, k + a[i].second);
          dpx[j + 1][kk] += dp[j][k] * p;
          dpx[j][k] += dp[j][k] * q;
        }
    }
    for (j = 0; j <= n; j++)
      for (k = 0; k < N; k++) dp[j][k] = dpx[j][k];
    memset(dpx, 0, sizeof(dpx));
  }
  double ans = 0;
  for (i = l; i <= n; i++)
    for (j = 0; j < N; j++) ans += dp[i][j];
  printf("%.10lf\n", ans);
  return 0;
}
