公式

A - 気温の外れ値 / Temperature Outliers 解説 by admin

Qwen3-Coder-480B

概要

与えられた気温データの中で、平均値からの差の絶対値が最も大きい観測地点の番号を求めます。複数ある場合は最も番号が小さいものを選びます。

考察

この問題では、各観測地点の気温 \(A_i\) と全データの平均値 \(\mu\) との差の絶対値 \(|A_i - \mu|\) を求め、その最大値に対応する観測地点の番号を答える必要があります。

素朴な方法としては、まず平均値を計算し、その後すべての観測地点に対して差の絶対値を計算して最大のものを選ぶというやり方があります。この方法は特に難しい処理を含まず、効率的に解くことができます。

注意点として、平均値 \(\mu\) は整数とは限らないため、浮動小数点数型(float)として扱う必要があります。また、複数の観測地点で同じ最大の差が見られた場合、番号が最も小さいものを選ぶ必要があるため、前から順番に見て初めて最大値を更新したインデックスを記録するようにします。

アルゴリズム

  1. 入力から観測地点数 \(N\) と気温リスト \(A\) を読み込む。
  2. 平均値 \(\mu\) を計算する:
    $\( \mu = \frac{\sum_{i=1}^{N} A_i}{N} \)$
  3. 各観測地点 \(i\) について、\(|A_i - \mu|\) を計算し、これまでの最大値より大きければインデックスを更新する。
  4. 最大の差となった観測地点の番号(1-indexed)を出力する。

計算量

  • 時間計算量: \(O(N)\)
    (平均値の計算に \(O(N)\)、最大差の探索に \(O(N)\)
  • 空間計算量: \(O(N)\)
    (入力データを保持する配列 \(A\) の分)

実装のポイント

  • 平均値は sum(a) / n のように浮動小数点数で計算すること。
  • 差の絶対値を比較する際に、最初に見つけた最大値だけを採用するようにする(番号が最も小さいものが選ばれるように)。
  • インデックスは0始まりだが、出力は1始まりなので、結果のインデックスに+1する必要がある。
## ソースコード

```python
n = int(input())
a = list(map(int, input().split()))

mean = sum(a) / n

max_diff = -1
result_index = -1

for i in range(n):
    diff = abs(a[i] - mean)
    if diff > max_diff:
        max_diff = diff
        result_index = i + 1

print(result_index)

この解説は qwen3-coder-480b によって生成されました。

投稿日時:
最終更新: