만드는 중입니다

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

Rikka와 최대 부분 구간 합

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

요약
길이가 최대 10만인 정수 배열의 모든 부분 배열에 대해 최대 부분 구간 합을 구하고, 그 총합을 2^64로 나눈 나머지로 출력합니다.
난이도

어려움10점 중 9점

유형
분할 정복, 누적 합, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

Maximum Subsegment Sum은 고전적인 문제다. Rikka는 이 문제를 처음 봤을 때만 해도 competitive programming의 외부인이었지만, 지금은 이 대회의 출제자가 되었다.

Rikka는 Maximum Subsegment Sum에 관한 문제를 내기로 했다. 길이가 mm인 배열 xx가 주어졌을 때, 최대 부분 구간 합은 다음과 같이 정의한다. mss⁡(A)=max⁡1≤i≤j≤m(∑k=ijxk).\operatorname{mss}(A) = \max_{1\leq i \leq j \leq m} \left(\sum_{k=i}^j x_k \right).

이제 길이가 nn인 정수 배열 AA가 주어진다. Rikka는 AA의 모든 부분 구간에 대한 최대 부분 구간 합을 구해 더한 값을 원한다. ∑1≤i≤j≤nmss⁡([Ai,…,Aj]).\sum_{1 \leq i \leq j \leq n} \operatorname{mss}([A_i, \dots, A_j]).

입력

첫째 줄에 정수 nn(1≤n≤1051 \leq n \leq 10^5)이 주어진다.

둘째 줄에 정수 nn개 AiA_i(−109≤Ai≤109-10^9 \leq A_i \leq 10^9)가 주어진다.

출력

답이 매우 클 수 있으므로, 답을 2642^{64}로 나눈 나머지를 한 줄에 정수 하나로 출력한다. 답을 xx라고 할 때, y=x+k×264y = x + k \times 2^{64}를 만족하는 정수 kk가 존재하는 가장 작은 음이 아닌 정수 yy를 출력한다.

예제4

  1. 예제 1

    입력
    5
    1 -1 1 -1 1
    
    예상 출력
    11
    
  2. 예제 2

    입력
    5
    1 -2 3 -4 5
    
    예상 출력
    39
    
  3. 예제 3

    입력
    10
    1 -3 -5 7 -9 10 8 -6 -4 2
    
    예상 출력
    555
    
  4. 예제 4

    입력
    4
    -1 -2 -3 -4
    
    예상 출력
    18446744073709551596