#include #include #include #include #include using namespace std; int main() { int N; cin >> N; double PA, PB; cin >> PA >> PB; vector A(N), B(N); for (int i=0;i> A[i]; for (int i=0;i> B[i]; ranges::sort(A); ranges::sort(B); // DP[ 状態S ] := カードを使っていった結果、Sとなる "確率" vector DP_A(1 << N), DP_B(1 << N); DP_A[(1 << N) - 1] = 1.0; DP_B[(1 << N) - 1] = 1.0; // prob[n試合目][カード] := を出す確率 vector prob_a(N, vector(N)); vector prob_b(N, vector(N)); auto calc_dp = [&]( double P, vector& dp, vector>& prob ) { for (int i=(1 << N) - 1;1<=i;i--) { bool is_first = true; for (int j=0;j