結果
問題 | No.133 カードゲーム |
ユーザー |
![]() |
提出日時 | 2023-07-15 11:21:27 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,006 bytes |
コンパイル時間 | 896 ms |
コンパイル使用メモリ | 78,208 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-16 19:42:00 |
合計ジャッジ時間 | 1,523 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
ソースコード
#include <iostream>#include <vector>#include <algorithm>#include <numeric>#include <string>#include <set>using namespace std;int main() {int N; cin >> N;vector<int> A(N), B(N);for (int i = 0; i < N; ++i) cin >> A[i];for (int i = 0; i < N; ++i) cin >> B[i];sort(A.begin(), A.end());sort(B.begin(), B.end());// すべての順列をA,B両方で生成し,// 互いの先頭の要素から比較し合う(順列生成(N!)は入れ子int A_win = 0, btl_cnt = 0;int A_adv = 0, B_adv = 0;do {do {btl_cnt++;A_adv = 0, B_adv = 0;for (int i = 0; i < N; ++i) {if (A[i] > B[i]) A_adv++;else B_adv++;}if (A_adv > B_adv) A_win++;} while (next_permutation(A.begin(), A.end()));} while (next_permutation(B.begin(), B.end()));//cout << A_win << ' ' << btl_cnt << endl;cout << (double)A_win / (double)btl_cnt << endl;}