Official
A - 中古車の選定 / Used Car Selection Editorial by admin
Qwen3-Coder-480B概要
各車の価格と走行距離が与えられ、指定された範囲内にある車の台数を数える問題。
考察
この問題では、各車に対して「価格が \(L\) 以上 \(R\) 以下」かつ「走行距離が \(M\) 以下」であるかどうかを判定し、条件を満たす車の数を数える必要があります。
素朴な方法として、すべての車について条件を順番にチェックしていくことが考えられます。これは \(N\) 台の車に対して定数時間の判定を行うだけなので、十分高速です。制約を見ると \(N\) は最大で \(10^5\) であり、各車の判定に \(O(1)\) しかかからないため、全体で \(O(N)\) で処理可能です。そのため、特別な工夫なしでも時間内に解けます。
また、各車は独立に扱われ、過去の情報が必要となるような処理もないので、メモリも最小限で済みます。
アルゴリズム
- 最初に、入力から \(N\), \(L\), \(R\), \(M\) を読み込む。
- 各車について、価格 \(P_i\) と走行距離 \(K_i\) を読み込みながら、以下の2つの条件を確認する:
- \(L \leq P_i \leq R\)
- \(K_i \leq M\)
- 両方の条件を満たす車があればカウントを1増やす。
- 全車をチェックした後、カウント結果を出力する。
計算量
- 時間計算量: \(O(N)\)
- 空間計算量: \(O(1)\)
実装のポイント
条件判定は単純な比較演算子で行えるので、if文内でまとめて記述すると簡潔に書ける。
入力を1行ずつ読み込む際に、
map(int, input().split())を使うことで効率的に値を取り出せる。カウンター変数はループ外で初期化しておく必要がある。
ソースコード
# 入力の読み込み
N, L, R, M = map(int, input().split())
count = 0
# 各車の情報を読み込んで条件をチェック
for _ in range(N):
P, K = map(int, input().split())
if L <= P <= R and K <= M:
count += 1
# 候補車の台数を出力
print(count)
この解説は qwen3-coder-480b によって生成されました。