結果
問題 | No.1861 Required Number |
ユーザー |
![]() |
提出日時 | 2022-04-07 22:04:24 |
言語 | PyPy3 (7.3.15) |
結果 |
MLE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 566 bytes |
コンパイル時間 | 190 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 904,052 KB |
最終ジャッジ日時 | 2024-11-28 02:04:21 |
合計ジャッジ時間 | 16,688 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 MLE * 1 |
other | AC * 42 TLE * 3 MLE * 1 |
ソースコード
from sys import stdin n, m, *a = map(int, stdin.read().split()) maxbit = (1<<(m+1)) - 1 dp = [0 for i in range(n+1)] dp[0] = 1 for i in range(n): dp[i+1] = (dp[i] | (dp[i] << a[i])) & maxbit if dp[n] & (1<<m): ans = 0 else: print("{}".format(-1)) exit() ans = 0 dp2 = [0 for i in range(n+1)] dp2[n] = 1<<m for i in reversed(range(n)): if dp[i] & dp2[i+1]: ans += 0 else: if (dp[i] << a[i]) & dp2[i+1] == dp2[i+1]: ans += 1 dp2[i] = (dp[i] & dp2[i+1]) | (dp[i] & (dp2[i+1] >> a[i])) print("{}".format(ans))