結果
問題 |
No.288 貯金箱の仕事
|
ユーザー |
![]() |
提出日時 | 2020-03-31 14:02:57 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 604 bytes |
コンパイル時間 | 956 ms |
コンパイル使用メモリ | 81,888 KB |
実行使用メモリ | 61,056 KB |
最終ジャッジ日時 | 2024-06-24 10:38:23 |
合計ジャッジ時間 | 5,790 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 49 WA * 4 |
ソースコード
#!/usr/bin/ python3.8 import sys read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines N, M = map(int, readline().split()) A = tuple(map(int, readline().split())) K = tuple(map(int, readline().split())) M = sum(a * k for a, k in zip(A, K)) - M if M < 0: print(-1) exit() U = 26000 INF = 10 ** 18 dp = [INF] * U dp[0] = 0 for a in A: for i in range(a, U): x = dp[i - a] + 1 if dp[i] > x: dp[i] = x n = A[-1] k = max(0, (M - U) // n + 1) M -= k * n if dp[M] > 10 ** 17: print(-1) else: print(dp[M] + k)