#include <bits/stdc++.h>
using namespace std;
double const EPS = 1e-9, PI = acos(-1);
const int N = 1e5 + 9, M = 2e2 + 9, OO = 1e9 + 7, MOD = 1e9 + 7;
const long long inf = 1e18;
int bag[N], n;
long double mem[M][M][M], p[N];
long double solve(int idx, int remRound, int remBags) {
  if (idx == n) return (remRound) ? 0 : 1.0;
  long double& ret = mem[idx][remRound][remBags];
  if (ret == ret) return ret;
  ret = 0;
  long double c1 = solve(idx + 1, remRound, remBags) * (1 - p[idx]);
  int decF = bag[idx];
  long double c2 = 0;
  if (remBags || (decF >= 0))
    c2 = solve(idx + 1, max(0, remRound - 1), min(200, remBags + (decF))) *
         (p[idx]);
  return ret = c1 + c2;
}
bool cmp(pair<int, int> it1, pair<int, int> it2) {
  return it1.first > it2.first;
}
int main() {
  cout << fixed << setprecision(12), ios::sync_with_stdio(false),
      cin.tie(nullptr), cout.tie(nullptr);
  int l, k;
  cin >> n >> l >> k;
  vector<pair<int, int>> vec(n);
  for (int i = 0; i < n; ++i) cin >> p[i], vec[i].second = p[i];
  for (int i = 0; i < n; ++i) cin >> bag[i], vec[i].first = bag[i];
  sort(vec.begin(), vec.end(), cmp);
  for (int i = 0; i < n; ++i)
    p[i] = vec[i].second / 100.0, bag[i] = vec[i].first;
  memset(mem, -1, sizeof mem);
  cout << solve(0, l, k);
  return 0;
}
