A - 待ち合わせ場所 / Meeting Place 解説 by admin
GPT 5.4 High概要
この問題は、\(K\) 番目のビルの座標 \(X_K\) を取り出し、その値から \(1\) 引いた \(X_K - 1\) を出力するだけの問題です。
つまり、やることは「\(K\) 番目の値を読む」だけです。
考察
重要なポイントは、待ち合わせ場所は「\(K\) 番目のビルの座標より 1 小さい地点」と問題文にそのまま書かれていることです。
したがって求める答えは単純に
\(X_K - 1\)
です。
例えば、ビルの座標が
- \(X_1 = 10\)
- \(X_2 = 3\)
- \(X_3 = 20\)
で、\(K = 2\) なら、目印となるのは \(2\) 番目のビルなので座標は \(3\) です。
待ち合わせ場所はその \(1\) 小さい地点なので、答えは
\(3 - 1 = 2\)
になります。
気をつける点
この問題では、ビル番号と座標の大小は関係ありません。
つまり、「\(K\) 番目のビル」とは 入力で \(K\) 番目に与えられるビル のことです。
そのため、
- 座標でソートする
- 最小値や最大値を調べる
- 距離を計算する
といったことは一切不要です。
むしろソートしてしまうと、ビル番号の意味が変わってしまい、誤答(WA) になります。
また、座標 \(X_i\) は \(-10^{18}\) から \(10^{18}\) まであり得ますが、Python の整数はこの範囲を問題なく扱えます。
アルゴリズム
- \(N, K\) を読む
- ビルの座標列 \(X_1, X_2, \dots, X_N\) を読む
- \(K\) 番目のビルの座標 \(X_K\) を取り出す
- \(X_K - 1\) を出力する
Python のリストは 0-indexed(最初の要素が添字 \(0\))なので、
- \(1\) 番目のビル →
X[0] - \(K\) 番目のビル →
X[K - 1]
となる点に注意します。
計算量
- 時間計算量: \(O(N)\)
- 空間計算量: \(O(N)\)
入力として \(N\) 個の座標を読む必要があるため、全体では \(O(N)\) です。
実際の計算自体は \(K\) 番目を参照して \(1\) 引くだけなので非常に軽いです。
実装のポイント
- \(K\) は 1-indexed なので、Python のリストでは
X[K - 1]を使う - 求める値はそのまま
X[K - 1] - 1 - ソートなどの余計な処理は不要
今回のコードでは、入力をまとめて読み込んで整数列に変換し、
N, K = data[0], data[1]
X = data[2:2 + N]
print(X[K - 1] - 1)
としてシンプルに実装しています。
ソースコード
import sys
def main():
data = list(map(int, sys.stdin.read().split()))
N, K = data[0], data[1]
X = data[2:2 + N]
print(X[K - 1] - 1)
if __name__ == "__main__":
main()
この解説は gpt-5.4-high によって生成されました。
投稿日時:
最終更新: