結果

問題 No.2889 Rusk
ユーザー hiro1729
提出日時 2024-09-13 22:23:17
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 258 ms / 2,000 ms
コード長 898 bytes
コンパイル時間 374 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 177,672 KB
最終ジャッジ日時 2024-09-13 22:23:28
合計ジャッジ時間 9,105 ms
ジャッジサーバーID
(参考情報)
judge3 / judge6
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 52
権限があれば一括ダウンロードができます

ソースコード

diff #

N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
C = list(map(int, input().split()))

D = [B[i] - A[i] for i in range(N)]
E = [C[i] - B[i] for i in range(N)]

ans = sum(A)

P = [0]
for i in D:
	P.append(P[-1] + i)

Q = [0]
for i in E:
	Q.append(Q[-1] + i)

K = [0]
M = 0
for i in range(1, N + 1):
	M = min(M, P[i])
	K.append(min(K[-1], M + Q[i]))

L = [0] * (N + 1)
L[N] = P[N] + Q[N]
M = P[N]
for i in range(N - 1, -1, -1):
	M = max(M, P[i])
	L[i] = max(L[i + 1], M + Q[i])

ans = max(ans, sum(A) + max(L[i + 1] - K[i] for i in range(N)))

X = [0]
M = 0
for i in range(1, N + 1):
	M = min(M, P[i])
	X.append(max(X[-1], P[i] - M))

Y = [0] * (N + 1)
Y[N] = 0
M = P[N]
for i in range(N - 1, -1, -1):
	M = max(M, P[i])
	Y[i] = max(Y[i + 1], M - P[i])

ans = max(ans, sum(A) + max(X[i] + Y[i + 1] for i in range(N)))

ans = max(ans, sum(A) + max(X))

print(ans)
0