#include <bits/stdc++.h>
using namespace std;
const int mid = 200;
int n, l, k;
double prob[200];
int bag[200];
double dp[201][201][mid + 201];
void print1(int tour, int won_tours, int free_spaces) {
  cout << "giving from [" << tour << "][" << won_tours << "][" << free_spaces
       << "] to ";
  cout << "[" << tour + 1 << "][" << won_tours + 1 << "]["
       << min(400, free_spaces + bag[tour]) << "] probability ";
  cout << dp[tour][won_tours][free_spaces] * prob[tour] << endl;
}
void print2(int tour, int won_tours, int free_spaces) {
  cout << "giving from [" << tour << "][" << won_tours << "][" << free_spaces
       << "] to ";
  cout << "[" << tour + 1 << "][" << won_tours << "][" << free_spaces
       << "] probability ";
  cout << dp[tour][won_tours][free_spaces] * (1 - prob[tour]) << endl;
}
int main() {
  cin >> n >> l >> k;
  for (int i = 0; i < n; ++i) cin >> prob[i], prob[i] /= 100;
  for (int i = 0; i < n; ++i) cin >> bag[i];
  dp[0][0][mid + k] = 1;
  for (int tour = 0; tour < n; ++tour)
    for (int won_tours = 0; won_tours < n; ++won_tours)
      for (int free_spaces = 0; free_spaces <= 400; ++free_spaces) {
        if (free_spaces + bag[tour] >= 0)
          dp[tour + 1][won_tours + 1][min(400, free_spaces + bag[tour])] +=
              dp[tour][won_tours][free_spaces] * prob[tour];
        dp[tour + 1][won_tours][free_spaces] +=
            dp[tour][won_tours][free_spaces] * (1 - prob[tour]);
      }
  double ans = 0;
  for (int won_tours = l; won_tours <= n; ++won_tours)
    for (int free_spaces = mid; free_spaces <= 400; ++free_spaces)
      ans += dp[n][won_tours][free_spaces];
  cout << fixed << setprecision(9) << ans << endl;
  return 0;
}
