結果
問題 |
No.115 遠足のおやつ
|
ユーザー |
![]() |
提出日時 | 2019-05-15 14:42:56 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 879 ms / 5,000 ms |
コード長 | 839 bytes |
コンパイル時間 | 450 ms |
コンパイル使用メモリ | 7,168 KB |
実行使用メモリ | 9,216 KB |
最終ジャッジ日時 | 2025-01-03 01:44:25 |
合計ジャッジ時間 | 7,585 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 |
ソースコード
def smaller(lst1, lst2): for i in range(0, len(lst1)): if lst1[i] < lst2[i]: return lst1 if lst1[i] > lst2[i]: return lst2 return lst1 N, D, K = map(int, raw_input().split()) dp = [] for i in range(0, D+1): lst = [] for j in range(0, K+1): lst.append([False, []]) dp.append(lst) dp[D][K] = [True, []] for i in range(1, N+1): for j in range(1, D+1): for k in range(1, K+1): if dp[j][k][0] and j-i >= 0: newlst = [] for p in range(0, len(dp[j][k][1])): newlst.append(dp[j][k][1][p]) newlst.append(i) if not dp[j-i][k-1][0]: dp[j-i][k-1] = [True, newlst] else: if smaller(newlst, dp[j-i][k-1][1]) == newlst: dp[j-i][k-1] = [True, newlst] if not dp[0][0][0]: print -1 else: ans = str(dp[0][0][1][0]) for i in range(1, len(dp[0][0][1])): ans = ans + ' ' + str(dp[0][0][1][i]) print ans