公式
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\) のときだけ値を覚えておけば十分です。
この方法ならメモリ使用量を抑えつつ、処理も単純になります。
アルゴリズム
- \(N, K\) を読み込む。
- \(i=1\) から \(N\) まで順に座標 \(x\) を読み込む。
- もし \(i=K\) なら、その値を
xkに保存する。 - 最後に
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 によって生成されました。
投稿日時:
最終更新: