提出 #3973573
ソースコード 拡げる
N = int(input())
*A, = map(int, input().split())
dp = [[-1]*(N+1-i) for i in range(N+1)]
for i in range(N+1):
dp[0][i] = 0
t = (N & 1)
for l in range(1, N+1):
S = dp[l-1]; T = dp[l]
t ^= 1
if t:
T[:] = (min(S[i+1] - A[i], S[i] - A[i+l-1]) for i in range(N-l+1))
else:
T[:] = (max(S[i+1] + A[i], S[i] + A[i+l-1]) for i in range(N-l+1))
print(dp[N][0])
提出情報
| 提出日時 | |
|---|---|
| 問題 | L - Deque |
| ユーザ | yaketake08 |
| 言語 | PyPy3 (2.4.0) |
| 得点 | 100 |
| コード長 | 399 Byte |
| 結果 | AC |
| 実行時間 | 473 ms |
| メモリ | 85852 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| All | 0_00, 0_01, 0_02, 0_03, 0_04, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 0_00 | AC | 171 ms | 38256 KiB |
| 0_01 | AC | 173 ms | 38256 KiB |
| 0_02 | AC | 169 ms | 38384 KiB |
| 0_03 | AC | 171 ms | 38256 KiB |
| 0_04 | AC | 166 ms | 38256 KiB |
| 1_00 | AC | 167 ms | 38256 KiB |
| 1_01 | AC | 167 ms | 38256 KiB |
| 1_02 | AC | 464 ms | 85852 KiB |
| 1_03 | AC | 409 ms | 81500 KiB |
| 1_04 | AC | 434 ms | 82012 KiB |
| 1_05 | AC | 435 ms | 82012 KiB |
| 1_06 | AC | 463 ms | 83292 KiB |
| 1_07 | AC | 473 ms | 83036 KiB |
| 1_08 | AC | 462 ms | 82780 KiB |
| 1_09 | AC | 465 ms | 83036 KiB |
| 1_10 | AC | 458 ms | 82780 KiB |
| 1_11 | AC | 461 ms | 83036 KiB |
| 1_12 | AC | 458 ms | 82908 KiB |
| 1_13 | AC | 458 ms | 82652 KiB |