131AC - ABC060C: Sentou

ABC060-C (300 points)
問題

スイッチを押すと  T 秒間お湯が出るシャワーがある.
このシャワーの前を  N 人の人がスイッチを押して通り過ぎていく.  i 番目の人は  1 番目の人がスイッチを押してから  t_i 秒後にスイッチを押すとき, お湯がでる時間の総和を求める.

  •  1 \leq N \leq 2 * 10^5
  •  1 \leq T \leq 10^9
  •  0 = t_1 < t_2 < \ldots < t_{N - 1} < t_N \leq 10^9
  • 入力は全て整数
方針
  •  i 番目の人がスイッチを押すときまでにお湯が出ている時間を  S_i とすると,
  •  S_1 = 0
  •  t_i 時点でお湯が出ている場合:  S_i = S_{i - 1} + (t_i - t_{i - 1})
  •  t_i 時点でお湯が出ていない場合:  S_i = S_{i - 1} + T
  •  N 番目の人がスイッチを押してから  T 秒間はお湯が確実に出ているので,  S_N + T が答え.
# input
N, T = map(int, input().split())
T_lst = list(map(int, input().split()))

ans = 0

for i in range(1, N):
    if T_lst[i] <= T_lst[i - 1] + T:
        ans += T_lst[i] - T_lst[i - 1]
    else:
        ans += T

ans += T
print(ans)