#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
int n, l, k;
int a[210], nec;
double p[210], ans;
double f[210][210][210], g[210][210][210];
int main() {
  scanf("%d%d%d", &n, &l, &k);
  k = (k < n ? k : n);
  for (int i = 0; i < n; i++) {
    scanf("%lf", &p[i]);
    p[i] /= 100.0;
  }
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  memset(f, 0, sizeof(f));
  memset(g, 0, sizeof(g));
  f[0][0][k] = 1.0;
  nec = n;
  ans = 0.0;
  for (int fin = 0; fin < n; fin++) {
    nec--;
    for (int win = 0; win <= fin; win++) {
      for (int spa = 0; spa <= n; spa++) {
        if (f[fin][win][spa] > 0.0) {
          if (spa + a[fin] >= 0) {
            f[fin + 1][win + 1][(spa + a[fin] < nec ? spa + a[fin] : nec)] +=
                f[fin][win][spa] * p[fin];
          } else
            g[fin + 1][win + 1][-(spa + a[fin])] += f[fin][win][spa] * p[fin];
          f[fin + 1][win][(spa < nec ? spa : nec)] +=
              f[fin][win][spa] * (1.0 - p[fin]);
        }
        if (g[fin][win][spa] > 0.0) {
          if (a[fin] - spa >= 0) {
            f[fin + 1][win + 1][(a[fin] - spa < nec ? a[fin] - spa : nec)] +=
                g[fin][win][spa] * p[fin];
          } else
            g[fin + 1][win + 1][spa - a[fin]] += g[fin][win][spa] * p[fin];
          g[fin + 1][win][spa] += g[fin][win][spa] * (1.0 - p[fin]);
        }
      }
    }
  }
  for (int win = l; win <= n; win++) ans += f[n][win][0];
  printf("%.6f\n", ans);
  return 0;
}
