#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200 + 1;
const int MAXM = 400 + 1;
int n, l, k, a[MAXN];
double p[MAXN], dp[2][MAXN][MAXM];
int main() {
  scanf("%d%d%d", &n, &l, &k);
  k = min(k, n);
  for (int i = 0; i < n; i++) {
    scanf("%lf", &p[i]);
    p[i] /= 100;
  }
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  int t1 = 0, t2;
  dp[t1][l][k + n] = 1;
  for (int o = 0; o < n; o++) {
    t2 = t1 ^ 1;
    for (int i = 0; i <= l; i++) {
      memset(dp[t2][i], 0, sizeof(double) * ((n << 1) + 1));
    }
    for (int i = 0; i <= l; i++) {
      for (int j = 1; j <= n << 1; j++) {
        if (a[o] != -1) {
          dp[t2][max(i - 1, 0)][min(j + a[o], n << 1)] += dp[t1][i][j] * p[o];
        } else if (j) {
          dp[t2][max(i - 1, 0)][j - 1] += dp[t1][i][j] * p[o];
        }
        dp[t2][i][j] += dp[t1][i][j] * (1 - p[o]);
      }
    }
    t1 = t2;
  }
  printf("%.13lf\n",
         accumulate(dp[t1][0] + n, dp[t1][0] + ((n << 1) + 1), 0.0));
  return 0;
}
