#include #include using namespace std; typedef long long lint; #define MIN(a,b) ((a)<(b)?(a):(b)) #define MAX(a,b) ((a)>(b)?(a):(b)) int main() { lint N, D, T[101] = { 0 }, K[101] = { 0 }, dp[101][2] = { 0 }; lint pos = 0; //0 : tokyo, 1 : kyoto cin >> N >> D; for (int i = 1; i <= N; i++) { cin >> T[i] >> K[i]; } //dp[i][j] : i 日目に j にいて最大 dp[0][1] = -D; for (int i = 1; i <= N; i++) { dp[i][0] = MAX(dp[i - 1][0] + T[i], dp[i - 1][1] + T[i] - D); dp[i][1] = MAX(dp[i - 1][0] + K[i] - D, dp[i - 1][1] + K[i]); } cout << MAX(dp[N][0], dp[N][1]) << endl; return 0; }