#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int i, j; long long n, d; vectort, k; cin >> n >> d; for (i = 0; i < n; i++) { long long num1, num2; cin >> num1 >> num2; t.push_back(num1); k.push_back(num2); } vector>dp(10000, vector(2, 0)); // [0][0]は東京 [0][1]は京都 dp[0][0] = t[0]; dp[0][1] = k[0] - d; for (i = 1; i < n; i++) { //dp[i][0] = max(dp[i - 1][0] + t[i], dp[i - 1][1] + k[i] - d); //dp[i][1] = max(dp[i - 1][1] + k[i], dp[i - 1][0] + t[i] - d); dp[i][0] = max(dp[i - 1][0] , dp[i - 1][1] - d) + t[i]; dp[i][1] = max(dp[i - 1][1] , dp[i - 1][0] - d) + k[i]; } cout << max(dp[n - 1][0], dp[n - 1][1]) << endl; getchar(); getchar(); return 0; }