#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(I,A,B) for(int I = (A); I < (B); ++I) #define CLR(mat) memset(mat, 0, sizeof(mat)) typedef long long ll; // dp[i][j] := i日目にj(0->TOKYO)にいる時の最大値 int dp[111][2]; int main() { ios::sync_with_stdio(false); cin.tie(0); int N, D; cin >> N >> D; int T[2][N]; FOR(i,0,111) FOR(j,0,2) dp[i][j] = -1e9; dp[0][0] = 0; FOR(i,0,N) cin >> T[0][i] >> T[1][i]; FOR(i,0,N) { FOR(j,0,2) { // 移動しない dp[i+1][j] = max(dp[i+1][j], dp[i][j]+T[j][i]); // 移動する dp[i+1][j^1] = max(dp[i+1][j^1], dp[i][j]+T[j^1][i]-D); } } cout << max(dp[N][0], dp[N][1]) << endl; return 0; }