← Home
package main

import (
	"fmt"
	"sort"
)

type Tour struct {
	p float64
	a int
}

func main() {
	var n, l, k int
	if _, err := fmt.Scan(&n, &l, &k); err != nil {
		return
	}

	tours := make([]Tour, n)
	for i := 0; i < n; i++ {
		var p int
		fmt.Scan(&p)
		tours[i].p = float64(p) / 100.0
	}
	for i := 0; i < n; i++ {
		fmt.Scan(&tours[i].a)
	}

	sort.Slice(tours, func(i, j int) bool {
		return tours[i].a > tours[j].a
	})

	if k > n {
		k = n
	}

	dp := make([][]float64, n+1)
	for i := range dp {
		dp[i] = make([]float64, n+1)
	}
	dp[0][k] = 1.0

	for _, t := range tours {
		nextDp := make([][]float64, n+1)
		for i := range nextDp {
			nextDp[i] = make([]float64, n+1)
		}

		for w := 0; w <= n; w++ {
			for c := 0; c <= n; c++ {
				if dp[w][c] == 0 {
					continue
				}
				nextDp[w][c] += dp[w][c] * (1.0 - t.p)

				newC := c + t.a
				if newC > n {
					newC = n
				}
				if newC >= 0 && w+1 <= n {
					nextDp[w+1][newC] += dp[w][c] * t.p
				}
			}
		}
		dp = nextDp
	}

	var ans float64
	for w := l; w <= n; w++ {
		for c := 0; c <= n; c++ {
			ans += dp[w][c]
		}
	}

	fmt.Printf("%.12f\n", ans)
}