#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;
}