#include <bits/stdc++.h>
using namespace std;
double dp[2][201][601];
int main(int argc, char* argv[]) {
  int n, l, k;
  cin >> n >> l >> k;
  vector<int> p(n);
  for (int i = (0); i < ((n)); ++i) cin >> p[i];
  vector<int> a(n);
  for (int i = (0); i < ((n)); ++i) cin >> a[i];
  int const OFFSET = 300;
  int cur = 0;
  dp[cur][0][OFFSET + k] = 1.0;
  for (int i = (0); i < ((n)); ++i) {
    int const next = !cur;
    memset(dp[next], 0, sizeof(dp[next]));
    for (int wins = (0); wins < ((n + 1)); ++wins)
      for (int bagsDiffPrizes = (0); bagsDiffPrizes < ((601)); ++bagsDiffPrizes)
        if (dp[cur][wins][bagsDiffPrizes]) {
          if (wins + 1 <= n) {
            if (a[i] != -1) {
              dp[next][wins + 1][min(600, bagsDiffPrizes + a[i])] +=
                  p[i] / 100.0 * dp[cur][wins][bagsDiffPrizes];
            } else {
              dp[next][wins + 1][max(0, bagsDiffPrizes - 1)] +=
                  p[i] / 100.0 * dp[cur][wins][bagsDiffPrizes];
            }
          }
          dp[next][wins][bagsDiffPrizes] +=
              (1 - p[i] / 100.0) * dp[cur][wins][bagsDiffPrizes];
        }
    cur = next;
  }
  double res = 0;
  for (int wins = (l); wins < (n + 1); ++wins)
    for (int bagsDiffPrizes = (OFFSET); bagsDiffPrizes < (601);
         ++bagsDiffPrizes)
      res += dp[cur][wins][bagsDiffPrizes];
  printf("%.8lf\n", res);
  return 0;
}
