結果
| 問題 |
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)