結果

問題 No.209 Longest Mountain Subsequence
ユーザー maspymaspy
提出日時 2020-03-06 14:37:21
言語 PyPy3
(7.3.15)
結果
MLE  
実行時間 -
コード長 889 bytes
コンパイル時間 378 ms
コンパイル使用メモリ 82,176 KB
実行使用メモリ 78,592 KB
最終ジャッジ日時 2024-10-14 02:47:50
合計ジャッジ時間 2,323 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
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
from array import array


# %%
T = int(readline())


# %%
def calc_from_left(A):
    N = len(A)
    dp = [array('i', [0] * N) for _ 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 = array('i', 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