結果
| 問題 |
No.173 カードゲーム(Medium)
|
| コンテスト | |
| ユーザー |
ei1333333
|
| 提出日時 | 2019-02-05 22:09:15 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,689 bytes |
| コンパイル時間 | 2,214 ms |
| コンパイル使用メモリ | 199,120 KB |
| 最終ジャッジ日時 | 2025-01-06 20:48:34 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | TLE * 10 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:69:7: warning: ‘p’ may be used uninitialized [-Wmaybe-uninitialized]
69 | if(p > q) latte += p + q;
| ^~
main.cpp:26:11: note: ‘p’ was declared here
26 | int p, q;
| ^
main.cpp:69:7: warning: ‘q’ may be used uninitialized [-Wmaybe-uninitialized]
69 | if(p > q) latte += p + q;
| ^~
main.cpp:26:14: note: ‘q’ was declared here
26 | int p, q;
| ^
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main() {
auto start = clock();
int N, A[20], B[20];
double X, Y;
cin >> N >> X >> Y;
for(int i = 0; i < N; i++) cin >> A[i];
for(int i = 0; i < N; i++) cin >> B[i];
sort(A, A + N);
sort(B, B + N);
random_device rnd;
mt19937 mt(rnd());
uniform_real_distribution<> gen(0, 1);
int win = 0, times = 0;
while(clock() - start < 2.9 * CLOCKS_PER_SEC) {
++times;
bool used1[20] = {}, used2[20] = {};
int latte = 0, malta = 0;
for(int i = 0; i < N; i++) {
int p, q;
auto x = gen(mt);
if(x <= X) {
for(int j = 0; j < N; j++) {
if(used1[j]) continue;
used1[j] = true;
p = A[j];
break;
}
} else {
int y = (int) (gen(mt) * (N - i - 1)) + (i + 1 != N);
for(int j = 0; j < N; j++) {
if(used1[j]) continue;
if(y == 0) {
used1[j] = true;
p = A[j];
break;
}
--y;
}
}
x = gen(mt);
if(x <= Y) {
for(int j = 0; j < N; j++) {
if(used2[j]) continue;
used2[j] = true;
q = B[j];
break;
}
} else {
int y = (int) (gen(mt) * (N - i - 1)) + (i + 1 != N);
for(int j = 0; j < N; j++) {
if(used2[j]) continue;
if(y == 0) {
used2[j] = true;
q = B[j];
break;
}
--y;
}
}
if(p > q) latte += p + q;
if(q > p) malta += p + q;
}
if(latte > malta) {
++win;
}
}
cout << fixed << setprecision(5) << 1.0 * win / times << endl;
}
ei1333333