E - Good Partition Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 600

問題文

長さ N の数列 A = \left( a_1, a_2, \ldots, a_N \right) が与えられます。

この数列を、いくつかの連続する空でない部分列 B_1, B_2, \ldots, B_K に分割することを考えます。たとえば、A = (5, -3, 6, 2, 4) のとき、A の分割の例は以下のとおりです。

  • B_1 = (5), B_2 = (-3, 6, 2), B_3 = (4)
  • B_1 = (5, -3), B_2 = (6, 2, 4)
  • B_1 = (5, -3, 6, 2, 4)

部分列 B_iスコア S \left( B_i \right) を、B_i に含まれる項の最大値と最小値の差 \max B_i - \min B_i と定義します。

A を最適に分割したときの、部分列のスコアの和 \sum_i S \left( B_i \right) の最大値を求めてください。

制約

  • 入力はすべて整数で与えられる
  • 1 \leq N \leq 200{,}000
  • |a_i| \leq 10^{9} (1 \leq i \leq N)

入力

入力は以下の形式で標準入力から与えられます。

N
a_1 a_2 \ldots a_N

出力

部分列のスコアの和の最大値を出力してください。


入力例 1

9
1 2 2 4 5 2 3 4 1

出力例 1

9

B_1 = (1, 2, 2, 4), B_2 = (5, 2, 3), B_3 = (4, 1) が最適な分割のうちのひとつです。

  • S(B_1) = 4 - 1 = 3
  • S(B_2) = 5 - 2 = 3
  • S(B_3) = 4 - 1 = 3

であるので、その合計である 9 が答えです。


入力例 2

12
3 -1 4 1 5 -9 2 6 5 -3 5 9

出力例 2

37