#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int MOD = 1e9 + 7;
long double EPS = 1e-12;
const int N = 205;
int n, l, k, p[N], a[N];
long double dp[N][N][2 * N];
bool vis[N][N][2 * N];
long double REC(int id, int won, int cap) {
  if (id >= n) return cap >= 200 && won >= l;
  if (vis[id][won][cap]) return dp[id][won][cap];
  vis[id][won][cap] = true;
  long double ans = 0;
  if (a[id] == -1)
    ans += ((long double)(p[id]) / (long double)(100)) *
           REC(id + 1, won + 1, cap - 1);
  else
    ans += ((long double)(p[id]) / (long double)(100)) *
           REC(id + 1, won + 1, min(cap + a[id], 400));
  ans +=
      ((long double)(100 - p[id]) / (long double)(100)) * REC(id + 1, won, cap);
  dp[id][won][cap] = ans;
  return ans;
}
short rain() {
  {
    memset(vis, false, sizeof(vis));
    scanf("%d%d%d", &n, &l, &k);
    for (int i = (0); i <= (n - 1); i++) scanf("%d", &p[i]);
    for (int i = (0); i <= (n - 1); i++) scanf("%d", &a[i]);
    printf("%.12LF\n", REC(0, 0, 200 + k));
  }
  return 0;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int start = 1000 * clock() / CLOCKS_PER_SEC;
  rain();
  cerr << "\nRuntime: " << 1000 * clock() / CLOCKS_PER_SEC - start << "ms\n";
}
