結果
問題 | No.1861 Required Number |
ユーザー | shobonvip |
提出日時 | 2022-03-04 22:19:33 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 532 ms / 2,500 ms |
コード長 | 720 bytes |
コンパイル時間 | 268 ms |
コンパイル使用メモリ | 81,840 KB |
実行使用メモリ | 233,960 KB |
最終ジャッジ日時 | 2024-07-18 23:00:52 |
合計ジャッジ時間 | 15,149 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 42 MLE * 4 |
ソースコード
n, k = map(int,input().split()) dp = [[0 for i in range(k + 1)] for j in range(n + 1)] dp[0][0] = 1 a = list(map(int,input().split())) for i in range(n): for j in range(k+1): dp[i+1][j] |= dp[i][j] if j + a[i] <= k: dp[i+1][j + a[i]] |= dp[i][j] if dp[n][k] == 0: print(-1) exit() fukugendp = [[0 for i in range(k + 1)] for j in range(n+1)] fukugendp[n][k] = 1 t = 0 for i in range(n-1, -1, -1): mode = 1 for j in range(k, -1, -1): if fukugendp[i+1][j] == 1: if dp[i][j] == 1: fukugendp[i][j] = 1 if j-a[i] >= 0: if dp[i][j - a[i]] == 1: fukugendp[i][j - a[i]] = 1 if fukugendp[i][j] == 1: mode = 0 if mode: t += 1 #for i in range(n+1): # print(fukugendp[i]) print(t)