/* * Author: srtry * Created: 2025-05-10T20:04:06+09:00 * Coding: utf-8-unix */ use proconio::input; use std::io::{stdout,Write,BufWriter}; fn main() { input!{ n:usize, d:isize, mut tk:[[isize;2];n] } tk.insert(0,vec![0,0]); let out = stdout(); let mut out = BufWriter::new(out.lock()); let mut dp:Vec> = vec![vec![0,0];n+1]; dp[1][0] = tk[1][0]; dp[1][1] = tk[1][1] - d; for i in 2..=n { dp[i][0] = dp[i-1][0].max(dp[i-1][1]-d) + tk[i][0]; dp[i][1] = dp[i-1][1].max(dp[i-1][0]-d) + tk[i][1]; } write!(out, "{}", dp[n].iter().max().unwrap()).unwrap(); }