結果
問題 | No.133 カードゲーム |
ユーザー |
![]() |
提出日時 | 2020-04-24 03:06:15 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 5,000 ms |
コード長 | 1,563 bytes |
コンパイル時間 | 850 ms |
コンパイル使用メモリ | 77,940 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-14 14:13:22 |
合計ジャッジ時間 | 1,789 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
ソースコード
#include <iostream>#include <vector>using namespace std;int N;vector<int> A, B;vector<int> perm_A;vector<int> perm_B;vector<bool> used_A;vector<bool> used_B;int num_A, num_B;void dfs(int time) {if (time == N) {// cout << "time == N" << endl;int a = 0, b = 0;for (int i = 0; i < N; i++) {if (A[perm_A[i]] > B[perm_B[i]]) {// num_A++;a++;} else {// num_B++;b++;}}if (a > b) num_A++;else num_B++;}for (int i = 0; i < N; i++) {if (!used_A[i]) {perm_A[time] = i;used_A[i] = true;for (int j = 0; j < N; j++) {if (!used_B[j]) {perm_B[time] = j;used_B[j] = true;dfs(time + 1);used_B[j] = false;}}used_A[i] = false;}}return;}int main() {cin >> N;// vector<int> A(3), B(3);A.resize(N);B.resize(N);for (int i = 0; i < N; i++) cin >> A[i];for (int i = 0; i < N; i++) cin >> B[i];used_A.resize(N);used_B.resize(N);// memset(used_A)used_A.assign(N, false);used_B.assign(N, false);perm_A.resize(N);perm_B.resize(N);// cout << "here?" << endl;num_A = 0;num_B = 0;dfs(0);// cout << num_A << " " << num_B << endl;cout << (double)num_A / (double)(num_A + num_B) << endl;}