#include <bits/stdc++.h>
using namespace std;
void err(istringstream &iss) {}
template <typename T, typename... Args>
void err(istringstream &iss, const T &varVal, const Args &...args) {
  string varName;
  iss >> varName;
  if (varName.back() == ',') varName.back() = ' ';
  cout << varName << " = " << varVal << "; ", err(iss, args...);
}
int n, m, K, T, Q, cn;
int L, a[205];
double p[205], memo[205][205][205 << 1];
bitset<(205 << 1)> vstd[205][205];
double dp(int at, int won, int diffCap) {
  if (at == n) return won >= L && diffCap >= 0;
  double &ret = memo[at][won][diffCap + 201];
  if (vstd[at][won][diffCap + 201]) return ret;
  vstd[at][won][diffCap + 201] = 1;
  ret = p[at] * dp(at + 1, won + 1, min(diffCap + a[at], 201)) +
        (1 - p[at]) * dp(at + 1, won, diffCap);
  return ret;
}
int main() {
  cin.tie(NULL);
  scanf("%d%d%d", &n, &L, &K);
  for (int i = 0; i < n; i++) {
    scanf("%lf", &p[i]), p[i] /= 100;
  }
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  printf("%.8f\n", dp(0, 0, K));
  return 0;
}
