#include <bits/stdc++.h>
using namespace std;
int n, l, b, x, type[205];
double arr[205], mem[205][205][405];
double get(int idx, int tours, int bags) {
  if (idx == n) {
    if (tours >= l && bags >= 0) return 1;
    return 0;
  }
  double &ret = mem[idx][tours][bags + 200];
  if (fabs(ret + 1) > 1e-10) return ret;
  ret = (1 - arr[idx]) * get(idx + 1, tours, bags);
  if (type[idx] == -1)
    ret += arr[idx] * get(idx + 1, tours + 1, bags - 1);
  else
    ret += arr[idx] * get(idx + 1, tours + 1, min(bags + type[idx], 200));
  return ret;
}
int main() {
  scanf("%d %d %d", &n, &l, &b);
  memset(mem, -1.0, sizeof(mem));
  for (int i = 0; i < n; i++) scanf("%lf", &arr[i]), arr[i] /= 100.0;
  for (int i = 0; i < n; i++) scanf("%d", &type[i]);
  cout << fixed << setprecision(12) << get(0, 0, b);
  return 0;
}
