137AC - ABC102C: Linear Approximation
ABC0102-C (300 points)
問題
長さ の整数列 があるとき, 以下を最小にするような整数 とそのときの最小値を求める.
- 入力は全て整数
方針
- が, のときに最小値を取ることが示せれば, と置き換えて中央値を取ることで最小値を計算可能.
証明
は昇順にソートされていると仮定し, の中央値をとする.
任意の に対して,
と,
を考えると,
となる. の場合も同様にすることで, が, のときに最小値を取ることが示せる.
from statistics import median_low # input N = int(input()) A = list(map(int, input().split())) for i in range(N): A[i] = A[i] - (i + 1) b = median_low(A) ans = 0 for i in range(N): ans += abs(A[i] - b) print(ans)