203AC - ABC043C - Be Together
ABC043-C (200 points)
問題
個の整数 に対して, を最小化する整数 を求める.
- 入力は全て整数
方針
目的関数 を微分すると となるので, は下に凸な関数であり, で最小値を取る. は整数なので, この近くの整数だけ調べれば良い.
# input n = int(input()) A = list(map(int, input().split())) ans1 = sum(A) // n + (sum(A) % n != 0) ans2 = ans1 - 1 cost1 = 0 cost2 = 0 for i in range(n): cost1 += (A[i] - ans1) ** 2 cost2 += (A[i] - ans2) ** 2 print(min(cost1, cost2))