結果
問題 | No.173 カードゲーム(Medium) |
ユーザー | 沙耶花 |
提出日時 | 2021-11-03 16:49:25 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 927 ms / 3,000 ms |
コード長 | 1,179 bytes |
コンパイル時間 | 4,178 ms |
コンパイル使用メモリ | 264,616 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-13 06:58:46 |
合計ジャッジ時間 | 9,935 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 50 ms
5,248 KB |
testcase_01 | AC | 110 ms
5,248 KB |
testcase_02 | AC | 732 ms
5,248 KB |
testcase_03 | AC | 727 ms
5,248 KB |
testcase_04 | AC | 713 ms
5,248 KB |
testcase_05 | AC | 594 ms
5,248 KB |
testcase_06 | AC | 452 ms
5,248 KB |
testcase_07 | AC | 380 ms
5,248 KB |
testcase_08 | AC | 376 ms
5,248 KB |
testcase_09 | AC | 927 ms
5,248 KB |
ソースコード
#include <stdio.h> #include <bits/stdc++.h> #include <atcoder/all> using namespace atcoder; using mint = modint; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 2000000000 unsigned long xor128() { static unsigned long x=123456789, y=362436069, z=521288629, w=88675123; unsigned long t=(x^(x<<11)); x=y; y=z; z=w; return (w=(w^(w>>19))^(t^(t>>8))); } int main(){ int N; cin>>N; int Pa,Pb; { double t; cin>>t; t *= 1000; Pa = round(t); } { double t; cin>>t; t *= 1000; Pb = round(t); } vector<int> a(N),b(N); rep(i,N){ cin>>a[i]; } rep(i,N){ cin>>b[i]; } sort(a.begin(),a.end()); sort(b.begin(),b.end()); double ans = 0.0; rep(i,1000000){ auto aa = a,bb = b; int Sa = 0,Sb = 0; rep(j,N){ int x,y; if(j==N-1||xor128()%1000<Pa)x = 0; else x = xor128()%(N-1-j)+1; if(j==N-1||xor128()%1000<Pb)y = 0; else y = xor128()%(N-1-j)+1; if(aa[x]>bb[y]){ Sa += aa[x]+bb[y]; } else{ Sb += aa[x]+bb[y]; } aa.erase(aa.begin()+x); bb.erase(bb.begin()+y); } if(Sa>Sb){ ans += 1.0 / 1000000.0; } } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }