結果
問題 |
No.385 カップ麺生活
|
ユーザー |
|
提出日時 | 2019-12-11 20:21:00 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 943 bytes |
コンパイル時間 | 308 ms |
コンパイル使用メモリ | 82,564 KB |
実行使用メモリ | 107,428 KB |
最終ジャッジ日時 | 2024-06-24 07:45:31 |
合計ジャッジ時間 | 8,307 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 5 RE * 2 TLE * 1 -- * 24 |
ソースコード
def era(n): is_prime = [True]*(n+1) is_prime[0] = False is_prime[1] = False for i in range(2, int(n**0.5)+1): if not is_prime[i]: continue for j in range(2*i, n+1, i): is_prime[j] = False return [i for i in range(n+1) if is_prime[i]] def bellman_ford(): dist = [10**18]*(M+1) dist[M] = 0 for i in range(M): for s, t, w in edges: if dist[s]!=10**18 and dist[t]>dist[s]+w: dist[t] = dist[s]+w return dist M = int(input()) N = int(input()) C = list(map(int, input().split())) edges = [] for i in range(M, -1, -1): for Ci in C: if i-Ci>=0: edges.append((i, i-Ci, -1)) dist = bellman_ford() ans = 0 for pi in era(M-1): if dist[pi]==10**18: continue ans += -dist[pi] minC = min(C) ans += max(-dist[i] for i in range(minC) if dist[i]!=10**18) print(ans)