No.595 登山

レベル : / 実行時間制限 : 1ケース 1.500秒 / メモリ制限 : 512 MB / 通常問題
タグ : / 解いたユーザー数 66
作問者 : ei1333ei1333 / テスター : はむこはむこ
13 ProblemId : 1591 / 出題時の順位表
問題文最終更新日: 2017-11-07 19:18:49

問題文

$N$ 個の地点 $1, 2, \dots, N$ が順番に直線上に並んでいて, 地点 $i$ の標高は $H_i$ です。

うしは現在, 地点 $1$ にいます。うしは地点 $1$ 以外の $N - 1$ 個の全ての地点を $1$ 回以上訪問したいと考えています。 終了地点はどこでも構いません。

うしは以下の $2$ 種類の操作を, 何度でも行うことができます。

  • 隣接する地点に移動する。うしは登山が苦手なので, 現在の地点 $i$ から隣接する地点 $j$ に移動するときエネルギー $\max(0, H_j - H_i)$ を消費する。
  • ワープして好きな地点に移動する。ワープ $1$ 回につきエネルギー $P$ を消費する。

このとき, 全ての地点を訪問するための最小エネルギーを求めてください。

入力

$N$ $P$
$H_1\ H_2\ \dots\ H_N$ 

$1$ 行目に, 地点の数 $N(2 \le N \le 200\ 000)$, ワープ $1$ 回のエネルギーの消費量 $P(0 \le P \le 10^9)$ が空白区切りで与えられます。

$2$ 行目に, $N$ 個の整数が空白区切りで与えられます。$i$ 番目の整数 $H_i(0 \le H_i \le 10^9)$ は地点 $i$ の標高を意味します。

出力

$1$ 行に, うしが全ての地点を訪問するための最小エネルギーを出力してください。

サンプル

サンプル1
入力
6 3
1 1 10 10 100 100
出力
3

例えば, 地点 $1$ から地点 $6$ にエネルギー $3$ を消費してワープします。その後地点 $5, 4, 3, 2$ の順で移動します。

サンプル 2
入力
6 5
100 1 3 0 10 100
出力
7

例えば, 地点 $1, 2, 3$ の順に移動し, 地点 $3$ から地点 $6$ にワープをします。その後地点 $5, 4$ の順で移動します。

地点 $2$ から $3$ への移動時にエネルギー $2$, 地点 $3$ から $6$ へのワープ時でエネルギー $5$ を消費するので, 合計 $7$ となります。

サンプル 3
入力
10 1000000000
0 1000000000 0 1000000000 0 1000000000 0 1000000000 0 1000000000
出力
5000000000

答えが 32bit 整数型に収まらないことがあるので注意してください。

サンプル 4
入力
4 0
0 1000000000 0 1000000000
出力
0

全ての地点をワープして訪れればよいです。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。