結果
問題 | No.133 カードゲーム |
ユーザー |
![]() |
提出日時 | 2020-08-01 09:25:02 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,533 bytes |
コンパイル時間 | 603 ms |
コンパイル使用メモリ | 66,256 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-07 15:25:14 |
合計ジャッジ時間 | 1,335 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
ソースコード
#include <iostream>#include <cstring>using std::cin;using std::cout;using std::endl;using std::memcpy;static int N, A[4], B[4];static int CN, CA[4*3*2*1+1][4], CB[4*3*2*1+1][4];static voidmake_combination_0(int val[4], int comb[][4], bool used[4], int n){for (int i = 0; i < N; i++){if (!used[i]){used[i] = true;comb[CN][n] = val[i];if (n + 1 < N){make_combination_0(val, comb, used, n + 1);}else{memcpy(comb[CN + 1], comb[CN], sizeof(int) * 4);CN++;}used[i] = false;}}}static voidmake_combination(int val[4], int comb[][4]){bool used[4] = {false};CN = 0;make_combination_0(val, comb, used, 0);}static boolfinal_win(int a[], int b[]){int win = 0;for (int n = 0; n < N; n++){if (b[n] < a[n]){win++;}}return N < win * 2;}// 最終的な勝率。これが single_win_rate と一致するのかどうかを知りたい。static doublefinal_win_rate(){make_combination(A, CA);make_combination(B, CB);int win = 0;for (int ia = 0; ia < CN; ia++){for (int ib = 0; ib < CN; ib++){if (final_win(CA[ia], CB[ib])){win++;}}}return double(win) / (CN * CN);}static doublesolve(){return final_win_rate();}intmain(){cin >> N;for (int n = 0; n < N; n++){cin >> A[n];}for (int n = 0; n < N; n++){cin >> B[n];}cout << solve() << endl;return 0;}