#include <bits/stdc++.h>
using namespace std;
const int MAXN = 207;
const int MAXV = 207;
const int MAXE = 207;
const int INF = 0x3f3f3f3f;
const int ZERO = 200;
const int END = 200 + 200;
int n, l, k;
double p[MAXN];
int rew[MAXN];
double dp[MAXN][MAXN][MAXN << 1];
int main() {
  while (~scanf("%d%d%d", &n, &l, &k)) {
    for (int i = 1; i <= n; i++) {
      scanf("%lf", &p[i]);
      p[i] = p[i] / 100.0;
    }
    for (int i = 1; i <= n; i++) {
      scanf("%d", &rew[i]);
    }
    memset(dp, 0, sizeof(dp));
    ;
    dp[0][0][ZERO + k] = 1;
    for (int i = 1; i <= n; i++)
      for (int j = 0; j < i; j++)
        for (int q = 0; q <= END; q++) {
          if (rew[i] >= 0)
            dp[i][j + 1][min(END, q + rew[i])] += dp[i - 1][j][q] * p[i];
          else if (q > 0)
            dp[i][j + 1][q - 1] += dp[i - 1][j][q] * p[i];
          dp[i][j][q] += dp[i - 1][j][q] * (1 - p[i]);
        }
    double ans = 0;
    for (int i = l; i <= END; i++)
      for (int j = ZERO; j <= END; j++) ans += dp[n][i][j];
    printf("%.12f\n", ans);
  }
  return 0;
}
