#include <bits/stdc++.h>
using namespace std;
int n, l, k;
double prob[210];
int cap[210];
double pd[210][410][210];
bool mem[210][410][210];
double func(int at, int bag, int vit) {
  if (at == n) return (vit >= l && bag >= 0);
  if (mem[at][bag + n + 1][vit]) return pd[at][bag + n + 1][vit];
  mem[at][bag + n + 1][vit] = 1;
  return pd[at][bag + n + 1][vit] =
             prob[at] * func(at + 1, min(bag + cap[at], 205), vit + 1) +
             (1.0 - prob[at]) * func(at + 1, bag, vit);
}
int main() {
  cin >> n >> l >> k;
  memset(mem, 0, sizeof mem);
  for (int i = 0; i < n; i++) {
    cin >> prob[i];
    prob[i] /= 100.0;
  }
  for (int i = 0; i < n; i++) cin >> cap[i];
  printf("%.10lf\n", func(0, k, 0));
  return 0;
}
