#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e2 + 10;
int n, l, k;
double p[maxn];
double win[maxn];
double lose[maxn];
int a[maxn];
bool mrk[maxn][maxn][maxn];
double dp[maxn][maxn][maxn];
double f(int i, int sz, int wins) {
  if (!mrk[i][sz][wins]) {
    mrk[i][sz][wins] = true;
    if (i > n) {
      if (wins < l || sz < wins) return dp[i][sz][wins] = 0.0;
      return dp[i][sz][wins] = 1.0;
    }
    double ans = 0.0;
    ans += f(i + 1, min(n, sz + a[i]), wins + 1) * win[i];
    ans += f(i + 1, sz, wins) * lose[i];
    dp[i][sz][wins] = ans;
  }
  return dp[i][sz][wins];
}
double solve() { return f(1, k, 0); }
int main() {
  scanf("%d %d %d", &n, &l, &k);
  for (int i = 1; i <= n; ++i) {
    scanf("%lf", &p[i]);
    win[i] = p[i] / 100.0;
    lose[i] = 1.0 - win[i];
  }
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
    ++a[i];
  }
  printf("%.10lf\n", solve());
  return 0;
}
