公式

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 の整数はこの範囲を問題なく扱えます。

アルゴリズム

  1. \(N, K\) を読む
  2. ビルの座標列 \(X_1, X_2, \dots, X_N\) を読む
  3. \(K\) 番目のビルの座標 \(X_K\) を取り出す
  4. \(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 によって生成されました。

投稿日時:
最終更新: