#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkmin(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T &a, T b) {
  if (b > a) a = b;
}
int N, L, K;
double p[221];
int a[221];
double dp[221][221][450];
int getk(int x) { return min(x, 440); }
int main() {
  scanf("%d%d%d", &N, &L, &K);
  for (int i = (0); i < (int)(N); i++) scanf("%lf", p + i);
  for (int i = (0); i < (int)(N); i++) p[i] /= 100;
  for (int i = (0); i < (int)(N); i++) scanf("%d", a + i);
  for (int i = (0); i < (int)(221); i++)
    for (int j = (0); j < (int)(221); j++)
      for (int k = (0); k < (int)(450); k++) dp[i][j][k] = .0;
  dp[0][0][getk(K + 220)] = 1;
  for (int i = (0); i < (int)(N); i++) {
    for (int j = (0); j < (int)(N + 1); j++)
      for (int k = (0); k < (int)(440 + 1); k++) {
        dp[i + 1][j + 1][getk(k + a[i])] += dp[i][j][k] * p[i];
        dp[i + 1][j][k] += dp[i][j][k] * (1.0 - p[i]);
      }
  }
  double ret = 0;
  for (int j = (L); j < (int)(221); j++)
    for (int k = (220); k < (int)(440 + 1); k++) ret += dp[N][j][k];
  printf("%.10lf\n", ret);
  return 0;
}
