結果
| 問題 |
No.173 カードゲーム(Medium)
|
| コンテスト | |
| ユーザー |
moti
|
| 提出日時 | 2015-04-03 10:54:12 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 908 bytes |
| コンパイル時間 | 1,319 ms |
| コンパイル使用メモリ | 163,728 KB |
| 実行使用メモリ | 8,448 KB |
| 最終ジャッジ日時 | 2024-07-04 01:37:08 |
| 合計ジャッジ時間 | 10,195 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 TLE * 1 -- * 8 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define REP(i,a,b) for(int i=a;i<(int)b;i++)
#define rep(i,n) REP(i,0,n)
int N, T;
double pa, pb;
int A[22], B[22];
int awins, sum;
default_random_engine gene;
uniform_real_distribution<double> dist(0,1);
vector<int> getrandvec(double p) {
int x;
vector<int> v,r;
rep(i, N) v.push_back(i);
rep(i, N-1) {
double d = dist(gene);
if(d < p) x = 0;
else x = 1+(N-1-i)*(d-p) / (1-p);
r.push_back(v[x]);
v.erase(v.begin()+x);
}
r.push_back(v[0]);
return r;
}
int main() {
cin >> N;
rep(i, N) cin >> A[i]; sort(A, A+N);
rep(i, N) cin >> B[i]; sort(B, B+N);
rep(_, 22222222) {
sum++;
vector<int> va(getrandvec(pa)), vb(getrandvec(pb));
int ascore = 0;
rep(i, N) {
if(A[va[i]] <= B[vb[i]]) { continue; }
ascore += A[va[i]] + B[vb[i]];
}
if(ascore > T/2) { awins++; }
}
printf("%.10f\n", (double)awins/sum);
return 0;
}
moti