만드는 중입니다

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

Maxdifficent Group

면접 대비

시간 제한1초메모리 제한1024 MB

요약
배열을 연속된 그룹으로 나누고, 인접한 두 그룹의 합 차이가 가장 큰 값을 구합니다.
난이도

보통10점 중 5점

유형
누적 합, 구현
정답자
아직 제출이 없습니다

문제

정수 배열 A1..NA_{1..N}이 주어진다. 단, N≥2N \ge 2이다. 배열의 각 원소를 다음 규칙을 지키면서 그룹에 배정한다.

  • 각 원소는 정확히 하나의 그룹에 속한다.
  • i<ji < j인 AiA_i와 AjA_j가 같은 그룹에 속하면, i≤k≤ji \le k \le j인 모든 AkA_k도 같은 그룹에 속한다.
  • 서로 다른 그룹에 속한 원소 쌍이 적어도 하나 있다.

GiG_i를 AiA_i의 그룹 ID라고 하자. 그룹의 비용은 그 그룹에 배정된 AA의 원소를 모두 더한 값이다.

cost(x)=∑i:Gi=xAi\text{cost}(x) = \sum_{i: G_i = x} A_i

서로 다른 두 그룹 ID GiG_i와 GjG_j는 모든 i≤k≤ji \le k \le j에 대해 GkG_k가 GiG_i 또는 GjG_j일 때에만 인접한다. 두 그룹 ID xx, yy의 diff()\text{diff}() 값은 두 비용 차이의 절댓값이다.

diff(x,y)=∣cost(x)−cost(y)∣\text{diff}(x, y) = |\text{cost}(x) - \text{cost}(y)|

인접한 그룹 ID 쌍 전체에서 diff()\text{diff}() 값의 최댓값이 가장 커지도록 그룹을 배정한다. 이 최댓값만 출력하면 된다.

예를 들어 A1..4={100,−30,−20,70}A_{1..4} = \{100, -30, -20, 70\}이면 그룹을 배정하는 방법은 8가지이다. 배정 G1..4={1,2,2,3}G_{1..4} = \{1, 2, 2, 3\}이면 가장 큰 diff()\text{diff}() 값은 150이다.

입력

첫 줄에 AA의 원소 개수 NN (2≤N≤100,0002 \le N \le 100{,}000)이 주어진다. 다음 줄에는 NN개의 정수 AiA_i (−106≤Ai≤106-10^6 \le A_i \le 10^6)가 주어진다.

출력

모든 그룹 배정에 대해 얻을 수 있는 diff()\text{diff}() 값의 최댓값을 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    4
    100 -30 -20 50
    
    예상 출력
    150
    
  2. 예제 2

    입력
    5
    12 7 4 32 9
    
    예상 출력
    46
    
  3. 예제 3

    입력
    6
    -5 10 -5 45 -20 15
    
    예상 출력
    70