//#define __USE_MINGW_ANSI_STDIO 0 #include using namespace std; typedef long long ll; #define int ll typedef vector VI; typedef vector VVI; typedef vector VL; typedef vector VVL; typedef pair PII; #define FOR(i, a, n) for (ll i = (ll)a; i < (ll)n; ++i) #define REP(i, n) FOR(i, 0, n) #define ALL(x) x.begin(), x.end() #define IN(a, b, x) (a<=x&&x T &chmin(T &a, const T &b) { return a = min(a, b); } template T &chmax(T &a, const T &b) { return a = max(a, b); } int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0}; int h[200010], dp[2][200010]; signed main(void) { int n, p; cin >> n >> p; REP(i, n) cin >> h[i]; REP(i, 2) REP(j, n) dp[i][j] = INF; dp[0][0] = 0; FOR(i, 1, n) { dp[0][i] = min(min(dp[0][i-1], dp[1][i-1])+p, dp[0][i-1] + max(0LL, h[i]-h[i-1])); dp[1][i] = min(min(dp[0][i-1], dp[1][i-1])+p, dp[1][i-1] + max(h[i-1]-h[i], 0LL)); } // REP(i, 2) { // REP(j, n) cout << dp[i][j] << " "; // cout << endl; // } cout << min(dp[0][n-1], dp[1][n-1]) << endl; return 0; }