#include <bits/stdc++.h>
using namespace std;
template <typename T>
void read(T &x) {
  x = 0;
  char ch = getchar();
  int fh = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') fh = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  x *= fh;
}
template <typename T>
void write(T x) {
  if (x < 0) x = -x, putchar('-');
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
template <typename T>
void writeln(T x) {
  write(x);
  puts("");
}
int n, l, k;
double p[205];
int a[205];
double dp[205][205][405];
signed main() {
  cin >> n >> l >> k;
  for (int i = 1; i <= n; ++i) {
    cin >> p[i];
    p[i] /= 100.0;
  }
  for (int i = 1; i <= n; ++i) cin >> a[i];
  dp[0][0][k + 200] = 1.0;
  for (int i = 1; i <= n; ++i)
    for (int j = 0; j <= i; ++j) {
      for (int v = 0; v <= 400; ++v) {
        if (j > 0 && v - a[i] <= 400 && v - a[i] >= 0)
          dp[i][j][v] += dp[i - 1][j - 1][v - a[i]] * p[i];
        dp[i][j][v] += dp[i - 1][j][v] * (1 - p[i]);
      }
      for (int u = 0; u <= 400; ++u)
        if (u + a[i] > 400 && j > 0)
          dp[i][j][401] += dp[i - 1][j - 1][u] * p[i];
      if (j > 0) dp[i][j][401] += dp[i - 1][j - 1][401] * p[i];
      dp[i][j][401] += dp[i - 1][j][401] * (1 - p[i]);
    }
  double ans = 0;
  for (int i = l; i <= n; ++i)
    for (int j = 200; j <= 401; ++j) ans += dp[n][i][j];
  cout << fixed << setprecision(12) << ans << endl;
  return 0;
}
