#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<algorithm>
#define FOR(i,a,b) for(i=(a);i<=(b);i++)
#define ROF(i,a,b) for(i=(a);i>=(b);i--)
#define mmt(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define mp make_pair
#define N 100010
using namespace std;
typedef long long LL;
typedef long double LD;
int n,l,K,i,w[N];
double P[N],dp[2][210][410];
int main()
{
  ios::sync_with_stdio(false);
  scanf("%d%d%d",&n,&l,&K);int i,j,k;
  FOR(i,1,n) scanf("%lf",&P[i]),P[i]/=100.0;
  FOR(i,1,n) scanf("%d",&w[i]);
  mmt(dp,0);int zero=200;
  dp[0][0][zero+K]=1;
  int Max=400;
  FOR(i,1,n)
  {
    mmt(dp[1],0);
    FOR(j,0,i-1)
    {
      FOR(k,0,Max)
      {
        if (w[i]!=-1)
        {
          int k1=min(Max,k+w[i]);
          dp[1][j+1][k1]+=dp[0][j][k]*P[i];
        }else if (k>0) dp[1][j+1][k-1]+=dp[0][j][k]*P[i];
        dp[1][j][k]+=dp[0][j][k]*(1-P[i]);
      }
    }
    memcpy(dp[0],dp[1],sizeof(dp[0]));
  }
  double ans=0;
  FOR(i,l,n) FOR(j,zero,Max) ans+=dp[1][i][j];
  printf("%.6f\n",ans);
  return 0;
}