#include <bits/stdc++.h>
using namespace std;
const int inf = 1000000000;
const int N = 209;
double p[N];
int c[N];
double f[N][N][2 * N];
bool used[N][N][2 * N];
int main() {
  std::ios::sync_with_stdio(false);
  int n, l, k;
  cin >> n >> l >> k;
  for (int i = 1; i <= n; i++) {
    cin >> p[i];
    p[i] /= 100;
  }
  for (int i = 1; i <= n; i++) cin >> c[i];
  memset(used, 0, sizeof used);
  memset(f, 0, sizeof f);
  f[0][0][min(2 * n, k + n)] = 1.0;
  used[0][0][min(2 * n, k + n)] = true;
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      for (int k = 0; k <= 2 * n; k++)
        if (used[i][j][k]) {
          if (i == n) continue;
          if (c[i + 1] == -1) {
            f[i + 1][j + 1][k - 1] += p[i + 1] * f[i][j][k];
            used[i + 1][j + 1][k - 1] = true;
          }
          if (c[i + 1] != -1) {
            f[i + 1][j + 1][min(2 * n, k + c[i + 1])] += p[i + 1] * f[i][j][k];
            used[i + 1][j + 1][min(2 * n, k + c[i + 1])] = true;
          }
          f[i + 1][j][k] += (1 - p[i + 1]) * f[i][j][k];
          used[i + 1][j][k] = true;
        }
    }
  }
  double ans = 0.0;
  for (int i = l; i <= n; i++)
    for (int k = n; k <= 2 * n; k++) ans += f[n][i][k];
  printf("%.9lf\n", ans);
}
