公式

A - バスの出発時刻 / Bus Departure Time 解説 by admin

Qwen3-Coder-480B

概要

最後の生徒がバスに乗車する時刻を求め、それに \(K\) 分を加えた時刻を出力する問題。

考察

この問題では、すべての生徒がバスに乗車する時刻 \(T_1, T_2, \ldots, T_N\) が与えられ、その中で最も遅い時刻(最大値)を求めた上で、それに定数 \(K\) を加えるだけです。

例えば、生徒が乗車する時刻が \([10, 50, 30]\) で、\(K = 5\) だったとします。このとき、最後の生徒は時刻 \(50\) に乗車するので、出発時刻は \(50 + 5 = 55\) になります。

素朴なアプローチとしては、すべての時刻をソートして最後の要素を取り出す方法がありますが、それだと時間計算量が \(O(N \log N)\) になってしまいます。しかし、この問題ではソートする必要はなく、単純に最大値を求めれば良いので、線形時間で解くことができます。

アルゴリズム

  1. 入力から生徒の人数 \(N\) と出発までの時間 \(K\) を受け取る。
  2. 各生徒の乗車時刻 \(T_1, T_2, \ldots, T_N\) をリストとして受け取る。
  3. そのリストの最大値(最後の生徒の乗車時刻)を求める。
  4. 最大値に \(K\) を加えたものを出力する。

これは組み込み関数 max() を使うことで簡単に実現できます。

計算量

  • 時間計算量: \(O(N)\)
  • 空間計算量: \(O(N)\)

実装のポイント

  • 入力を効率よく処理するために、map 関数と list を使って一度に整数リストに変換している。
  • 最後の乗車時刻を求めるのに max(T) を使っている。これは線形時間で動作する。
## ソースコード

```python
N, K = map(int, input().split())
T = list(map(int, input().split()))

last_time = max(T)
departure_time = last_time + K

print(departure_time)

この解説は qwen3-coder-480b によって生成されました。

投稿日時:
最終更新: