Official

A - 合格基準 / Passing Criteria Editorial by admin

Qwen3-Coder-480B

概要

各生徒の点数が基準点 \(S\) との差が \(T\) 以内であるかどうかを判定し、条件を満たす生徒の人数を数える問題。

考察

この問題では、各生徒の点数 \(A_i\) について、\(|A_i - S| \leq T\) が成り立つかどうかを確認する必要があります。これは言い換えれば、点数 \(A_i\) が区間 \([S - T, S + T]\) に含まれるかどうかを判定することと同じです。

例えば、\(S = 70\), \(T = 5\) の場合、合格となる点数の範囲は \(65\) 点以上 \(75\) 点以下です。それぞれの生徒の点数がこの範囲に入っているかを一つずつ確認すれば良いです。

制約を見ると、\(N\) は最大で \(2 \times 10^5\) なので、各生徒に対して判定を行う処理を1回ずつ行うのは十分可能であり、全探索でも間に合います。

素朴なアプローチでも特に問題なく解けるため、特殊なアルゴリズムは必要ありません。

アルゴリズム

  1. 入力から \(N\), \(S\), \(T\) および点数のリスト \(A\) を読み込む。
  2. 各点数 \(a\) について、\(|a - S| \leq T\) であるかどうかを判定。
  3. 条件を満たす点数の個数をカウントする。
  4. カウント結果を出力する。

計算量

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

実装のポイント

  • 絶対値の計算は abs() 関数を使うと簡単。

  • 入力の受け取り方を間違えないように注意(特に2行目の複数の点数)。

    ソースコード

N, S, T = map(int, input().split())
A = list(map(int, input().split()))

count = 0
for a in A:
    if abs(a - S) <= T:
        count += 1

print(count)

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

posted:
last update: