結果
問題 |
No.5018 Let's Make a Best-seller Book
|
ユーザー |
![]() |
提出日時 | 2023-10-01 14:34:43 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 933 bytes |
コンパイル時間 | 311 ms |
コンパイル使用メモリ | 86,840 KB |
実行使用メモリ | 4,380 KB |
スコア | 0 |
最終ジャッジ日時 | 2023-10-01 14:34:47 |
合計ジャッジ時間 | 3,701 ms |
ジャッジサーバーID (参考情報) |
judge14 / judge15 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | TLE * 1 -- * 99 |
ソースコード
T, N, money = map(int, input().split()) s, p, r = [0] * N, [0] * N, [0] * N def softmax(x): import math # 入力リストから最大値を取得 max_x = max(x) # ソフトマックス関数の計算 exp_x = [e - max_x for e in x] exp_x = [math.exp(e) for e in exp_x] softmax_values = [e / sum(exp_x) for e in exp_x] return softmax_values def do(arg): if type(arg) == list: print(1, *arg, flush=True) else: print(2, arg, flush=True) money = int(input()) if money == -1: exit() s = list(map(int, input().split())) p = list(map(int, input().split())) r = list(map(int, input().split())) return money, s, p, r money, s, p, r = do([money // (500 * N)] * N) for week in range(T - 1): pay = [p * s for p, s in zip(p, softmax(money))] if sum(pay) > money: pay = [p * money / sum(pay) for p in pay] money, s, p, r = do(pay)