結果
問題 | No.133 カードゲーム |
ユーザー |
![]() |
提出日時 | 2020-07-04 10:09:54 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 5,000 ms |
コード長 | 1,048 bytes |
コンパイル時間 | 3,687 ms |
コンパイル使用メモリ | 195,104 KB |
最終ジャッジ日時 | 2025-01-11 15:28:12 |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
ソースコード
#include <bits/stdc++.h>#define rep(i,n) for(int i = 0; i < (n); ++i)#define srep(i,s,t) for (int i = s; i < t; ++i)#define drep(i,n) for(int i = (n)-1; i >= 0; --i)using namespace std;typedef long long int ll;typedef pair<int,int> P;#define yn {puts("Yes");}else{puts("No");}#define MAX_N 200005int main() {int n;cin >> n;int a[n], b[n];rep(i,n)cin >> a[i];rep(i,n)cin >> b[i];double ans = 0;const int N = n;vector<int> v(N);iota(v.begin(), v.end(), 0); // v に 0, 1, 2, ... N-1 を設定do {vector<int> u(N);iota(u.begin(), u.end(), 0);do{int x = 0, y = 0;rep(i,N){if(a[v[i]] > b[u[i]]) x++;else if(a[v[i]] < b[u[i]]) y++;}if(x > y) ans += 1;}while(next_permutation(u.begin(), u.end()));} while( next_permutation(v.begin(), v.end()) ); // 次の順列を生成srep(i,1,n+1) ans /= i * i;cout << ans << endl;return 0;}