結果
問題 | No.1861 Required Number |
ユーザー |
👑 |
提出日時 | 2022-03-21 03:54:27 |
言語 | PyPy3 (7.3.15) |
結果 |
MLE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 729 bytes |
コンパイル時間 | 158 ms |
コンパイル使用メモリ | 82,380 KB |
実行使用メモリ | 907,660 KB |
最終ジャッジ日時 | 2024-10-08 00:13:54 |
合計ジャッジ時間 | 28,788 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 MLE * 2 |
other | AC * 42 TLE * 3 MLE * 1 |
ソースコード
n, k = map(int, input().split()) A = list(map(int, input().split())) dp = [[False] * (k + 1) for _ in range(n + 1)] dp[0][0] = True for i, a in enumerate(A, 1): dp[i] = dp[i - 1].copy() for j in range(k, a - 1, -1): dp[i][j] |= dp[i - 1][j - a] if not dp[n][k]: print(-1) exit() dp2 = [[False] * (k + 1) for _ in range(n + 1)] dp2[n][0] = True for i in range(n - 1, -1, -1): a = A[i] dp2[i] = dp2[i + 1].copy() for j in range(k, a - 1, -1): dp2[i][j] |= dp2[i + 1][j - a] ans = 0 for i, a in enumerate(A): plus = 1 for j in range(k + 1): if dp[i][j] and dp2[i + 1][k - j]: plus = 0 break ans += plus print(ans)