結果
問題 | No.133 カードゲーム |
ユーザー |
|
提出日時 | 2015-02-01 01:41:54 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,239 bytes |
コンパイル時間 | 832 ms |
コンパイル使用メモリ | 91,864 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-25 03:29:00 |
合計ジャッジ時間 | 1,464 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
ソースコード
#include <cstdio>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <algorithm>#include <cmath>#include <string>#include <vector>#include <list>#include <queue>#include <stack>#include <set>#include <map>#include <bitset>#include <numeric>#include <limits>#include <climits>#include <cfloat>#include <functional>using namespace std;double solve(const vector<int>& a, const vector<int>& b, bitset<4> bs, int diff){int n = a.size();int j = bs.count();if(j == n){if(diff > 0)return 1.0;elsereturn 0.0;}double ret = 0.0;for(int i=0; i<n; ++i){if(!bs[i]){bs[i] = true;if(a[i] > b[j])ret += solve(a, b, bs, diff + 1);else if(a[i] < b[j])ret += solve(a, b, bs, diff - 1);elseret += solve(a, b, bs, diff);bs[i] = false;}}ret /= n - j;return ret;}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];printf("%.10f\n", solve(a, b, 0, 0));return 0;}