結果
問題 | No.258 回転寿司(2) |
ユーザー | Theta |
提出日時 | 2022-12-16 14:34:17 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 32 ms / 2,000 ms |
コード長 | 900 bytes |
コンパイル時間 | 164 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 11,008 KB |
最終ジャッジ日時 | 2024-11-15 19:51:02 |
合計ジャッジ時間 | 5,519 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 67 |
ソースコード
def main(): N = int(input()) V = list(map(int, input().split())) dp_table = [[0, 0, 0, 0] for _ in range(N+1)] dp_table[0][1] -= V[0] for idx, sushi_value in enumerate(V, 1): if dp_table[idx-1][0] > dp_table[idx-1][1]: dp_table[idx][0] = dp_table[idx-1][0] dp_table[idx][2] = dp_table[idx-1][2] else: dp_table[idx][0] = dp_table[idx-1][1] dp_table[idx][2] = idx-1 dp_table[idx][1] = dp_table[idx-1][0] + sushi_value dp_table[idx][3] = dp_table[idx-1][2] sushi_ate = [] if dp_table[-1][0] > dp_table[-1][1]: sushi_ate.append(dp_table[-1][2]) else: sushi_ate.append(N) print(max(dp_table[-1][:2])) while dp_table[sushi_ate[-1]][3] > 0: sushi_ate.append(dp_table[sushi_ate[-1]][3]) print(*reversed(sushi_ate)) if __name__ == "__main__": main()