結果
問題 | No.2889 Rusk |
ユーザー |
|
提出日時 | 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 |
ソースコード
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)