#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) { return a * (b / (gcd(a, b))); }
inline int toInt(string s) {
  int v;
  istringstream sin(s);
  sin >> v;
  return v;
}
inline long long toLL(string s) {
  long long v;
  istringstream sin(s);
  sin >> v;
  return v;
}
template <class T>
inline string toString(T x) {
  ostringstream sout;
  sout << x;
  return sout.str();
}
using namespace std;
double memo[201][201][461];
int P[201];
int prizes[201];
int n, l, k;
double solve(int idx, int wins, int rem) {
  if (idx == n) return rem >= 0 && wins <= 0 ? 1.0 : 0.0;
  double &ret = memo[idx][wins][rem + 201];
  if (ret == ret) return ret;
  ret = 0;
  int tmp = prizes[idx] == -1 ? rem - 1 : rem + prizes[idx];
  ret = (double)(P[idx] / 100.0 *
                 solve(idx + 1, max(0, wins - 1), min(200, tmp)));
  ret += (double)((100.0 - P[idx]) / 100.0 * solve(idx + 1, wins, rem));
  return ret;
}
int main() {
  scanf("%d%d%d", &n, &l, &k);
  memset(memo, -1, sizeof(memo));
  for (int i = 0; i < n; i++) {
    scanf("%d", &P[i]);
  }
  for (int i = 0; i < n; i++) {
    cin >> prizes[i];
  }
  double sol = solve(0, l, k);
  printf("%.12f", sol);
}
