次の目的地に向かって進んでいって、早く着きそうだったら周辺で時間を潰し、最終的に時間ぴったりに着けば OK。
using System; namespace ABC086C { class Program { static void Main(string[] args) { var n = int.Parse(Console.ReadLine()); var lines = new int[n][]; for (var i = 0; i < n; i++) { var line = Console.ReadLine().Split(' '); lines[i] = new int[3] { int.Parse(line[0]), int.Parse(line[1]), int.Parse(line[2]), }; } var t = 0; var x = 0; var y = 0; for (var i = 0; i < lines.Length; i++) { var tNext = lines[i][0]; var xNext = lines[i][1]; var yNext = lines[i][2]; var tDiff = tNext - t; for(var j = 0; j < tDiff; j++) { if (x != xNext) { if (x < xNext) { x++; } else { x--; } } else if (y != yNext) { if (y < yNext) { y++; } else { y--; } } else { // 目的地に早く着いてしまったら周囲で時間を潰す y++; } } // 時間ピッタリに着けなかったら No if (x != xNext || y != yNext) { Console.WriteLine("No"); return; } t = tNext; } Console.WriteLine("Yes"); } } }