結果

問題 No.209 Longest Mountain Subsequence
ユーザー maspymaspy
提出日時 2020-03-06 14:39:09
言語 PyPy3
(7.3.15)
結果
MLE  
実行時間 -
コード長 856 bytes
コンパイル時間 166 ms
コンパイル使用メモリ 82,528 KB
実行使用メモリ 77,636 KB
最終ジャッジ日時 2024-04-22 03:53:57
合計ジャッジ時間 2,909 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 MLE -
testcase_01 MLE -
testcase_02 MLE -
testcase_03 MLE -
testcase_04 MLE -
testcase_05 MLE -
権限があれば一括ダウンロードができます

ソースコード

diff #

#!/usr/bin/env python3
# %%
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines


# %%
T = int(readline())


# %%
def calc_from_left(A):
    N = len(A)
    dp = [[0] * (i + 1) for i in range(N)]
    for i in range(N):
        for j in range(i):
            for k in range(j + 1):
                if not (A[i] > A[j] >= A[k]):
                    continue
                if A[i] - A[j] > A[j] - A[k]:
                    x = dp[j][k] + 1
                    if dp[i][j] < x:
                        dp[i][j] = x
    return [max(x) for x in dp]


def solve():
    N = int(readline())
    A = tuple(map(int, readline().split()))
    dp1 = calc_from_left(A)
    dp2 = calc_from_left(A[::-1])[::-1]
    return max(x + y for x, y in zip(dp1, dp2)) + 1


# %%
for _ in range(T):
    print(solve())
0