#include #include using namespace std; using i64 = long long; int main(void) { constexpr i64 INIT = i64(powl(10, 15)); int n; i64 d; scanf("%d%lld", &n, &d); vector T(n), K(n); for(int i=0; i> dp(n+1, vector(2, 0)); // dp[n+1][2] dp[0][0] = INIT; for(int i=0; i 東京 dp[i+1][0] = max(dp[i+1][0], dp[i][0] + T[i]); // 東京 -> 京都 dp[i+1][1] = max(dp[i+1][1], dp[i][0] - d + K[i]); // 京都 -> 東京 dp[i+1][0] = max(dp[i+1][0], dp[i][1] - d + T[i]); // 京都 -> 京都 dp[i+1][1] = max(dp[i+1][1], dp[i][1] + K[i]); } i64 res = max(dp[n][0], dp[n][1]) - INIT; printf("%lld\n", res); return 0; }