結果
問題 | No.258 回転寿司(2) |
ユーザー | yuki2006 |
提出日時 | 2015-07-31 20:13:25 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 13 ms / 2,000 ms |
コード長 | 529 bytes |
コンパイル時間 | 933 ms |
コンパイル使用メモリ | 6,912 KB |
実行使用メモリ | 6,528 KB |
最終ジャッジ日時 | 2024-11-06 18:43:06 |
合計ジャッジ時間 | 5,367 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 67 |
ソースコード
N = int(raw_input()) data = map(int, raw_input().split()) if N == 1: print data[0] print 1 exit() dp = [0] * N dp[0] = data[0] dp[1] = max(dp[0], data[1]) for i in xrange(2, N): dp[i] = max(dp[i - 2] + data[i], dp[i - 1]) print dp[-1] choice = [] for k in xrange(N - 1, 1, -1): if dp[k] - dp[k - 2] == data[k]: choice.append(k + 1) dp[k - 1] = 0 if dp[1] == data[1]: choice.append(2) elif dp[0] == data[0]: choice.append(1) choice.reverse() print " ".join(map(str, choice))