#include <bits/stdc++.h>
using namespace std;
double mem[202][202][202], p[202];
bool vis[202][202][202];
int n, l, prz[202];
double dp(int pos, int sz, int cnt) {
  if (pos == n) return (cnt >= l && sz >= cnt);
  if (vis[pos][sz][cnt]) return mem[pos][sz][cnt];
  vis[pos][sz][cnt] = 1;
  mem[pos][sz][cnt] = ((100.0 - p[pos]) / 100.0) * dp(pos + 1, sz, cnt);
  if (prz[pos] == -1)
    mem[pos][sz][cnt] += (p[pos] / 100.0) * dp(pos + 1, sz, cnt + 1);
  if (prz[pos] != -1)
    mem[pos][sz][cnt] +=
        (p[pos] / 100.0) * dp(pos + 1, min(n, sz + prz[pos] + 1), cnt + 1);
  return mem[pos][sz][cnt];
}
int main() {
  int k;
  scanf("%d %d %d", &n, &l, &k);
  for (int i = 0; i < n; i++) scanf("%lf", &p[i]);
  for (int i = 0; i < n; i++) scanf("%d", &prz[i]);
  printf("%.10f\n", dp(0, k, 0));
  return 0;
}
