結果
| 問題 |
No.133 カードゲーム
|
| コンテスト | |
| ユーザー |
今野博晴
|
| 提出日時 | 2020-08-01 09:18:50 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,519 bytes |
| コンパイル時間 | 632 ms |
| コンパイル使用メモリ | 64,768 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-07 15:16:51 |
| 合計ジャッジ時間 | 1,574 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 8 WA * 11 |
ソースコード
#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 void
make_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], 4);
CN++;
}
used[i] = false;
}
}
}
static void
make_combination(int val[4], int comb[][4])
{
bool used[4] = {false};
CN = 0;
make_combination_0(val, comb, used, 0);
}
static bool
final_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 double
final_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 double
solve()
{
return final_win_rate();
}
int
main()
{
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;
}
今野博晴