package main import ( "fmt" "math/rand" "time" "bufio" "os" "strconv" "sort" ) var s = bufio.NewScanner(os.Stdin) func next() string {s.Split(bufio.ScanWords); s.Scan(); return s.Text()} func nextInt() int { i, e := strconv.Atoi(next()); if e != nil { panic(e)}; return int(i)} func copySlice(a []int) []int{ b := make([]int, len(a)) copy(b, a) return b } func removeSlice(a []int, x int) ([]int) { b := append(a[:x], a[x+1:]...) return b } func popSlice(a []int, x int) ([]int, int) { r := a[x] b := removeSlice(a, x) return b, r } func main() { var n int var pa, pb float64 fmt.Scan(&n, &pa, &pb) a := make([]int, n) b := make([]int, n) rand.Seed(time.Now().UnixNano()) for i:=0;i rand.Float64() { sub_a, ca = popSlice(sub_a, 0) }else { sub_a, ca = popSlice(sub_a, rand.Intn(len(sub_a)-1)+1) } if pb > rand.Float64() { sub_b, cb = popSlice(sub_b, 0) }else { sub_b, cb = popSlice(sub_b, rand.Intn(len(sub_b)-1)+1) // cb = sub_b[rand.Intn(len(sub_b)-1)+1] } }else { ca = sub_a[0] cb = sub_b[0] } if ca > cb { score_a += ca + cb }else { score_b += ca + cb } } if score_a > score_b{ // fmt.Println("a WIN!") win_a += 1 }else{ // fmt.Println("a LOSE!") win_b += 1 } } // fmt.Println(win_a, win_b) fmt.Println(float64(win_a)/float64(X)) }