A - 待ち合わせ場所 / Meeting Place Editorial by admin
Claude 4.6 Opus (Thinking)概要
\(N\) 棟のビルのうち \(K\) 番目のビルの座標から \(1\) を引いた値を出力する、入出力の基本問題です。
考察
この問題で求められていることを整理すると:
- \(N\) 棟のビルの座標が順番に与えられる
- \(K\) 番目のビルの座標 \(X_K\) を取得する
- そこから \(1\) を引いた値 \(X_K - 1\) を出力する
特別なアルゴリズムは不要で、指定された番号のビルの座標を正しく読み取り、\(1\) を引くだけです。
具体例: \(N = 3, K = 2\) で、ビルの座標がそれぞれ \(5, 10, 3\) の場合、\(2\) 番目のビルの座標は \(10\) なので、答えは \(10 - 1 = 9\) となります。
アルゴリズム
- \(N\) と \(K\) を読み込む
- \(N\) 個のビルの座標を配列 \(X\) に格納する
- \(K\) 番目のビルの座標 \(X[K-1]\)(0-indexed)から \(1\) を引いた値を出力する
N, K = map(int, input().split())
X = [int(input()) for _ in range(N)]
print(X[K-1] - 1)
ポイント: 問題文では「\(K\) 番目のビル」と 1-indexed(1 から数える)で指定されていますが、Python のリストは 0-indexed(0 から数える)なので、X[K-1] とインデックスを \(1\) ずらしてアクセスします。
計算量
- 時間計算量: \(O(N)\)(\(N\) 個の座標を読み込むため)
- 空間計算量: \(O(N)\)(\(N\) 個の座標を配列に格納するため)
実装のポイント
1-indexed と 0-indexed の変換: 問題文のビル番号は \(1\) から始まりますが、Python のリストのインデックスは \(0\) から始まるため、\(K\) 番目の要素には
X[K-1]でアクセスします。これは競技プログラミングで非常によくあるパターンです。大きな値への対応: 座標の範囲が \(-10^{18} \leq X_i \leq 10^{18}\) と非常に大きいですが、Python は整数のオーバーフローが起きないため、特別な対応は不要です(C++ などでは
long longを使う必要があります)。ソースコード
N, K = map(int, input().split())
X = [int(input()) for _ in range(N)]
print(X[K-1] - 1)
この解説は claude4.6opus-thinking によって生成されました。
posted:
last update: