公式

A - 待ち合わせ場所 / Meeting Place 解説 by admin

gpt-5.3-codex

概要

\(K\) 番目のビルの座標 \(X_K\) を取り出し、待ち合わせ地点として \(X_K - 1\) を出力するだけの問題です。
必要なのは「\(K\) 番目の値」だけなので、全体を複雑に処理する必要はありません。

考察

重要な気づきは次の1点です。

  • 求める答えは \(X_K - 1\) であり、\(X_1, X_2, \dots, X_N\) のうち必要なのは \(K\) 番目の値だけ。

例えば
\(N=5, K=3\)、座標が \(10, -4, 7, 100, 0\) なら、必要なのは \(X_3=7\) だけで、答えは \(7-1=6\) です。


素朴な実装としては、いったん全座標を配列に保存してから X[K-1]-1 を出しても正解です。
ただしこの問題では、配列保存すら不要です。入力を1行ずつ読みながら、\(i=K\) のときだけ値を覚えておけば十分です。

この方法ならメモリ使用量を抑えつつ、処理も単純になります。

アルゴリズム

  1. \(N, K\) を読み込む。
  2. \(i=1\) から \(N\) まで順に座標 \(x\) を読み込む。
  3. もし \(i=K\) なら、その値を xk に保存する。
  4. 最後に xk - 1 を出力する。

計算量

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

実装のポイント

  • 入力のビル番号は 1始まり なので、ループも for i in range(1, N+1) として合わせるとミスしにくいです。

  • 座標は \(-10^{18}\)\(10^{18}\) ですが、Python の int なら問題なく扱えます。

  • sys.stdin.readline を使うと入力が多い場合でも安定して高速です。

    ソースコード

import sys

def main():
    input = sys.stdin.readline
    N, K = map(int, input().split())
    xk = None
    for i in range(1, N + 1):
        x = int(input().strip())
        if i == K:
            xk = x
    print(xk - 1)

if __name__ == "__main__":
    main()

この解説は gpt-5.3-codex によって生成されました。

投稿日時:
最終更新: