#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  std::cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  std::cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
double dp[210][210][210];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long int T = 1;
  while (T--) {
    long long int n, l, K;
    cin >> n >> l >> K;
    long long int a[n + 1];
    double p[n + 1];
    for (long long int i = 0; i < n; i = i + 1) {
      cin >> p[i];
      p[i] = p[i] / ((double)100);
    }
    for (long long int i = 0; i < n; i = i + 1) {
      cin >> a[i];
    }
    for (long long int i = 0; i < 201; i = i + 1) {
      for (long long int j = 0; j < 201; j = j + 1) {
        for (long long int k = 0; k < 201; k = k + 1) {
          dp[i][j][k] = (double)0;
        }
      }
    }
    dp[0][0][0] = (double)1;
    for (long long int i = 0; i < n; i++) {
      for (long long int j = 0; j < i + 1; j++) {
        for (long long int k = 0; k <= n; k++) {
          long long int c = a[i] + 1;
          dp[i + 1][j + 1][min(k + c, n)] += dp[i][j][k] * p[i];
          dp[i + 1][j][k] += dp[i][j][k] * ((double)1 - p[i]);
        }
      }
    }
    double ans = (double)0;
    for (long long int i = l; i <= n; i++) {
      for (long long int p = 0; p <= n; p++) {
        if (p + K - i >= 0) {
          ans = ans + dp[n][i][p];
        }
      }
    }
    printf("%0.11f\n", ans);
  }
  return 0;
}
