結果
問題 | No.133 カードゲーム |
ユーザー |
|
提出日時 | 2019-12-08 20:05:10 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 5,000 ms |
コード長 | 1,962 bytes |
コンパイル時間 | 1,933 ms |
コンパイル使用メモリ | 174,092 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-31 11:19:48 |
合計ジャッジ時間 | 3,228 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
ソースコード
#include <bits/stdc++.h>using namespace std;#define int long longusing P = pair<int, int>;constexpr array<int, 4> dx = {1, 0, -1, 0};constexpr array<int, 4> dy = {0, 1, 0, -1};constexpr int INF = 1234567890;constexpr int MOD = 1000000000 + 7;// constexpr int MOD = 998244353;template <class T>bool chmax(T &a, const T &b){if (a < b){a = b;return 1;}return 0;}template <class T>bool chmin(T &a, const T &b){if (b < a){a = b;return 1;}return 0;}constexpr int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }constexpr int fact(int n) { return n > 1 ? n * fact(n - 1) % MOD : 1; }int modinv(int a){int b = MOD, u = 1, v = 0;while (b){int t = a / b;a -= t * b;swap(a, b);u -= t * v;swap(u, v);}u %= MOD;if (u < 0)u += MOD;return u;}constexpr int modpow(int a, int n){int rtn = 1;while (n > 0){if (n & 1)rtn = rtn * a % MOD;a = a * a % MOD;n >>= 1;}return rtn;}constexpr int sign(int a) { return (a > 0) - (a < 0); };bool aWin(int n, const vector<int> a, const vector<int> b){int win_count = 0;for (int i = 0; i < n; i++)win_count += sign(a[i] - b[i]);return win_count > 0;}signed main(){cin.tie(0);ios::sync_with_stdio(0);cout << setprecision(10);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];int a_win_count = 0, match = 0;sort(a.begin(), a.end());sort(b.begin(), b.end());do{do{a_win_count += aWin(n, a, b);match++;} while (next_permutation(b.begin(), b.end()));} while (next_permutation(a.begin(), a.end()));cout << (double)a_win_count / match << endl;}