#include <bits/stdc++.h>   using namespace std;   const int iinf = 1e9 + 7;   const long long linf = 1ll << 60;   const double dinf = 1e10;   template <typename T>   inline void scf(T &x) {     bool f = 0;     x = 0;     char c = getchar();     while ((c <  0  || c >  9 ) && c !=  - ) c = getchar();     if (c ==  - ) {       f = 1;       c = getchar();     }     while (c >=  0  && c <=  9 ) {       x = x * 10 + c -  0 ;       c = getchar();     }     if (f) x = -x;     return;   }   template <typename T1, typename T2>   void scf(T1 &x, T2 &y) {     scf(x);     return scf(y);   }   template <typename T1, typename T2, typename T3>   void scf(T1 &x, T2 &y, T3 &z) {     scf(x);     scf(y);     return scf(z);   }   const int N = 233;   int n, l, k;   int p[N], a[N];   double dp[N][N][N * 2];   int main() {     scf(n, l, k);     for (int i = (1); i <= (n); i++) scf(p[i]);     for (int i = (1); i <= (n); i++) scf(a[i]);     dp[0][0][k + 200] = 1.0;     for (int i = 0; i < (n); i++)       for (int j = (0); j <= (i); j++)         for (int k = (0); k <= (400); k++)           if (dp[i][j][k] > 1e-20) {             dp[i + 1][j][k] += dp[i][j][k] * (1.0 * (100 - p[i + 1]) / 100.0);             int nxtk = k;             if (a[i + 1] < 0)               nxtk--;             else               nxtk += a[i + 1];             if (nxtk > 400) nxtk = 400;             if (k >= 0)               dp[i + 1][j + 1][nxtk] += dp[i][j][k] * (1.0 * p[i + 1] / 100.0);           }     double ans = 0.0;     for (int j = (l); j <= (n); j++)       for (int k = (200); k <= (400); k++) ans += dp[n][j][k];     printf( %.12f n , ans);     return 0;   }   