結果
| 問題 |
No.475 最終日 - Writerの怠慢
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-20 18:49:03 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 91 ms / 2,000 ms |
| コード長 | 1,400 bytes |
| コンパイル時間 | 328 ms |
| コンパイル使用メモリ | 82,712 KB |
| 実行使用メモリ | 101,224 KB |
| 最終ジャッジ日時 | 2025-03-20 18:50:23 |
| 合計ジャッジ時間 | 2,071 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 15 |
ソースコード
import math
def main():
import sys
input = sys.stdin.read
data = input().split()
idx = 0
N = int(data[idx])
idx += 1
S = int(data[idx])
idx += 1
writer_id = int(data[idx])
idx += 1
a = list(map(int, data[idx:idx+N]))
idx += N
a_writer = a[writer_id]
non_writers = []
for i in range(N):
if i != writer_id:
non_writers.append(a[i])
m = len(non_writers)
if m == 0:
print(1.0)
return
W = a_writer + 100 * S
R_min_list = []
for a_x in non_writers:
K = (W - a_x) + 1
K_rest = K - 50 * S
if K_rest <= 0:
print(0.0)
return
numerator = 50 * S
denominator = K_rest
tmp = (numerator / denominator) - 0.8
R_float = tmp / 0.2
R_float += 1e-12 # To handle cases where R_float is integral
R_min_x = math.ceil(R_float)
R_min_x = max(R_min_x, 1)
if R_min_x > m:
print(0.0)
return
R_min_list.append(R_min_x)
R_min_list.sort()
for i in range(m):
if R_min_list[i] > (i + 1):
print(0.0)
return
prob = 1.0
for i in range(m):
term = ( (i + 2 - R_min_list[i]) ) / (i + 1)
prob *= term
print("{0:.10f}".format(prob))
if __name__ == '__main__':
main()
lam6er