結果
| 問題 |
No.173 カードゲーム(Medium)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-03-27 00:53:22 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 571 ms / 3,000 ms |
| コード長 | 1,230 bytes |
| コンパイル時間 | 286 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 78,432 KB |
| 最終ジャッジ日時 | 2024-06-29 01:21:57 |
| 合計ジャッジ時間 | 4,522 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 |
ソースコード
def read_data():
N, Pa, Pb = input().split()
N = int(N)
Pa = float(Pa)
Pb = float(Pb)
A = list(map(int, input().split()))
B = list(map(int, input().split()))
A.sort(reverse=True)
B.sort(reverse=True)
return N, Pa, Pb, A, B
def solve(N, Pa, Pb, A, B):
Nsim = 10**5
Awin = 0
for i in range(Nsim):
if simulate(N, Pa, Pb, A[:], B[:]):
Awin += 1
return Awin / Nsim
import random
def simulate(N, Pa, Pb, A, B):
scoreA = 0
scoreB = 0
for i in range(N-1, 0, -1):
ra = random.random()
rb = random.random()
if ra < Pa:
pa = A[-1]
del A[-1]
else:
ia = random.randrange(0, i)
pa = A[ia]
del A[ia]
if rb < Pb:
pb = B[-1]
del B[-1]
else:
ib = random.randrange(0, i)
pb = B[ib]
del B[ib]
if pa > pb:
scoreA += pa + pb
elif pa < pb:
scoreB += pa + pb
pa = A[0]
pb = B[0]
if pa > pb:
scoreA += pa + pb
elif pa < pb:
scoreB += pa + pb
return scoreA > scoreB
N, Pa, Pb, A, B = read_data()
print(solve(N, Pa, Pb, A, B))