using System; using System.Collections.Generic; using System.Linq; class Solution { static void Main() { var vals = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); int n = vals[0]; int cost = vals[1]; var tokyo = new int[n]; var kyoto = new int[n]; for (int i = 0; i < n;i++) { vals = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); tokyo[i] = vals[0]; kyoto[i] = vals[1]; } int onTokyo = 0; int onKyoto = -cost; for (int i = 0; i < n;i++) { var nextTokyo = Math.Max(onTokyo, onKyoto - cost ) + tokyo[i]; var nextKyoto = Math.Max(onKyoto, onTokyo - cost ) + kyoto[i]; onTokyo = nextTokyo; onKyoto = nextKyoto; } var best = Math.Max(onTokyo, onKyoto); Console.WriteLine(best); } }