#include <bits/stdc++.h>
const long long mod = 1000000007;
using namespace std;
template <typename T>
void printV(vector<T>& v) {
  for (int i = 0; i < (int)(v.size()); i++) cout << v[i] << " ";
  cout << endl;
}
template <typename T>
void printVs(vector<vector<T> >& v) {
  for (int i = 0; i < (int)(v.size()); i++) printV(v[i]);
}
const int N = 600000;
const char aa = 'a';
double P[201][201][201];
int main(int argc, const char* argv[]) {
  memset(P, 0, sizeof(P));
  int n, l, k;
  cin >> n >> l >> k;
  vector<double> p(n);
  vector<int> a(n);
  for (int i = 0; i < (int)(n); i++) cin >> p[i];
  for (int i = 0; i < (int)(n); i++) cin >> a[i];
  k = min(k, n);
  for (int tour = n; tour >= 0; tour--)
    for (int cap = n; cap >= k; cap--)
      for (int trp = tour; trp >= 0; trp--) {
        if (tour == n) {
          P[tour][cap][trp] = ((cap >= trp && trp >= l) ? 1.0 : 0.0);
          continue;
        }
        int ncap = min(cap + a[tour] + 1, n);
        int ntrp = trp + 1;
        P[tour][cap][trp] = (p[tour] / 100.0) * P[tour + 1][ncap][ntrp];
        P[tour][cap][trp] += (1.0 - p[tour] / 100.0) * P[tour + 1][cap][trp];
      }
  setprecision(6);
  cout << fixed;
  cout << P[0][k][0] << endl;
}
