結果

問題 No.45 回転寿司
ユーザー kutsutamakutsutama
提出日時 2018-03-04 00:01:37
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
TLE  
実行時間 -
コード長 1,206 bytes
コンパイル時間 105 ms
コンパイル使用メモリ 10,844 KB
実行使用メモリ 182,164 KB
最終ジャッジ日時 2023-09-18 13:33:19
合計ジャッジ時間 17,577 ms
ジャッジサーバーID
(参考情報)
judge15 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 TLE -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
testcase_31 -- -
testcase_32 -- -
testcase_33 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

n = int(input())
v = [int(x) for x in input().split()]

res = 0
stack = []
memo = []
for i in range(n):
    memo.append(set())

stack.append(0)
memo[0].add(v[0])
s = v[0]
res = v[0]
end = False
while not end:
    idx = stack[-1]
    v2 = 0
    v3 = 0
    if idx + 2 < n:
        v2 = v[idx + 2]
    if idx + 3 < n:
        v3 = v[idx + 3]

    if v2 != 0 and s + v2 not in memo[idx + 2]:
        stack.append(idx + 2)
        memo[idx + 2].add(s + v2)
        res = max(s + v2, res)
        s += v2
    elif v3 != 0 and s + v3 not in memo[idx + 3]:
        stack.append(idx + 3)
        memo[idx + 3].add(s + v3)
        res = max(s + v3, res)
        s += v3
    else:
        for j in range(len(stack)):
            vn = v[stack[-1]]
            idx_n = stack.pop()
            if len(stack) < 1:
                if idx_n == 0 and n >= 2:
                    stack.append(1)
                    s = v[1]
                else:
                    end = True
                break
            idx_p = stack[-1]
            s -= vn
            if (s not in memo[idx_p + 2]) or (idx_p + 3 < n and s not in memo[idx_p + 3]):
                break

print(res)
0