from itertools import combinations def max_probability(n, required_points, probabilities): best_prob = 0.0 for r in range(required_points, n + 1): for subset in combinations(range(n), r): prob = 1.0 for i in range(n): if i in subset: prob *= probabilities[i] else: prob *= (1 - probabilities[i]) best_prob = max(best_prob, prob) return best_prob t = int(input()) for _ in range(t): n, required_points = map(int, input().split()) probabilities = [float(input()) for _ in range(n)] result = max_probability(n, required_points, probabilities) print(f"{result:.6f}")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | from itertools import combinations def max_probability(n, required_points, probabilities): best_prob = 0.0 for r in range(required_points, n + 1): for subset in combinations(range(n), r): prob = 1.0 for i in range(n): if i in subset: prob *= probabilities[i] else: prob *= (1 - probabilities[i]) best_prob = max(best_prob, prob) return best_prob t = int(input()) for _ in range(t): n, required_points = map(int, input().split()) probabilities = [float(input()) for _ in range(n)] result = max_probability(n, required_points, probabilities) print(f"{result:.6f}") |