#include <bits/stdc++.h>
double dp[201][201][401];
float prob[201];
int winnings[201];
int min(int a, int b) { return a < b ? a : b; }
int main() {
  int n, l, scap;
  scanf("%d %d %d", &n, &l, &scap);
  for (int i = 1; i <= n; i++) {
    scanf("%f", &prob[i]);
    prob[i] /= 100;
  }
  for (int i = 1; i <= n; i++) scanf("%d", &winnings[i]);
  for (int i = 0; i <= n; i++) {
    for (int j = -n; j <= n; j++) {
      dp[0][i][j + n] = 0;
    }
  }
  dp[0][0][min(scap + n, n + n)] = 1;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      for (int k = -n; k <= n - i; k++) {
        int w = winnings[i];
        dp[i][j][k + n] = 0;
        if (w < 0) {
          if (j > 0) {
            dp[i][j][k + n] += prob[i] * dp[i - 1][j - 1][k + 1 + n];
          }
          if (k == n - i)
            dp[i][j][k + n] += (1 - prob[i]) * dp[i - 1][j][k + 1 + n];
          dp[i][j][k + n] += (1 - prob[i]) * dp[i - 1][j][k + n];
        } else {
          dp[i][j][k + n] = 0;
          if (k == n - i) {
            if (j > 0) {
              for (int c = n - i + 1; c >= n - i - w && c >= -n; c--) {
                dp[i][j][k + n] += dp[i - 1][j - 1][c + n] * prob[i];
              }
            }
            dp[i][j][k + n] += dp[i - 1][j][k + n] * (1 - prob[i]);
            dp[i][j][k + n] += dp[i - 1][j][k + 1 + n] * (1 - prob[i]);
          } else {
            if (j > 0 && k >= w - n) {
              dp[i][j][n + k] += dp[i - 1][j - 1][k - w + n] * prob[i];
            }
            dp[i][j][k + n] += dp[i - 1][j][k + n] * (1 - prob[i]);
          }
        }
      }
    }
  }
  double tot = 0;
  for (int i = l; i <= n; i++) {
    tot += dp[n][i][n];
  }
  printf("%f\n", tot);
  return 0;
}
