만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

효율적인 분할

시간 제한2초메모리 제한512 MB

요약
배열 [0, N)을 연속한 구간으로 나누고, 각 구간의 (시작점의 b) + (끝점의 c) + (구간 내 a의 합) 중 최솟값을 최대화한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 이분 탐색, 누적 합, 그리디
정답자
아직 제출이 없습니다

문제

[0,N)[0, N)의 분할을 다음 세 조건을 만족하는 정수 수열 S=(s0,…,sr)S = (s_0, \ldots, s_r)로 정의한다.

  • s0=0s_0 = 0,
  • sr=Ns_r = N,
  • si<si+1s_i < s_{i + 1} (0≤i<r0 \le i < r).

즉, 각 ii에 대해 [si,si+1)[s_i, s_i + 1)은 연속한 구간을 나타내고, [0,N)[0, N)은 이 rr개 구간의 합집합이다.

−109-10^9 이상 10910^9 이하의 정수로 이루어진 길이 NN의 수열 세 개가 주어진다. AA (a0,…,aN−1a_0, \ldots, a_{N-1}), BB (b0,…,bN−1b_0, \ldots, b_{N-1}), CC (c0,…,cN−1c_0, \ldots, c_{N-1})이다.

분할 SS의 점수 f(S)f(S)를 다음과 같이 정의한다.

f(S)=min⁡0≤i<r{bsi+csi+1−1+∑si≤j<si+1aj}f(S)=\min_{0 \leq i < r}\left\{b_{s_i}+c_{s_{i+1}-1}+\sum_{s_i \leq j < s_{i+1}} a_j\right\}

가능한 모든 분할 SS에 대한 ff의 최댓값을 구한다.

입력

첫째 줄에 정수 NN이 주어진다 (1≤N≤2⋅1051 \le N \le 2 \cdot 10^5). 둘째 줄에 NN개의 정수가 주어지며, ii번째 정수가 aia_i이다. 셋째 줄과 넷째 줄에도 같은 형식으로 수열 bb와 cc가 주어진다 (−109≤ai,bi,ci≤109-10^9 \le a_i, b_i, c_i \le 10^9).

출력

가능한 모든 분할 중 점수의 최댓값을 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    2
    1 -1
    -1 4
    1 -2
    
    예상 출력
    1
    
  2. 예제 2

    입력
    1
    1000000000
    1000000000
    1000000000
    
    예상 출력
    3000000000