#include <bits/stdc++.h>
using namespace std;
template <class T>
void max_swap(T& a, const T& b) {
  a = max(a, b);
}
template <class T>
void min_swap(T& a, const T& b) {
  a = min(a, b);
}
const double EPS = 1e-8;
const double PI = acos(-1.0);
const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};
bool valid_pos(int x, int y, int w, int h) {
  return 0 <= x && x < w && 0 <= y && y < h;
}
int main() {
  ios::sync_with_stdio(false);
  int N, L, K, a[256];
  double p[256];
  cin >> N >> L >> K;
  for (int i = 0; i < N; ++i) cin >> p[i], p[i] /= 100;
  for (int i = 0; i < N; ++i) cin >> a[i];
  static double dp[222][222][222];
  dp[0][0][0] = 1;
  for (int i = 0; i < N; ++i) {
    for (int j = 0; j < N; ++j) {
      for (int k = 0; k <= N; ++k) {
        int inc = a[i] + 1;
        int nk = min(N, k + inc);
        double cur = dp[i][j][k];
        dp[i + 1][j + 1][nk] += cur * p[i];
        dp[i + 1][j][k] += cur * (1 - p[i]);
      }
    }
  }
  double res = 0;
  for (int j = L; j <= N; ++j)
    for (int k = max(0, j - K); k <= N; ++k) res += dp[N][j][k];
  cout.precision(10);
  cout.setf(ios::fixed);
  cout << res << endl;
}
