結論から言えば「非負数と負数にわけて総和を計算する」です。

D – ±1 Operation 2

問題の趣旨

長さ N の数列 A がある。
A[i]に 1 を加算または減算するという操作を 0 回以上繰り返すことで A の要素をすべて x にしたい。
必要な操作の最小回数を求めよ。

これは「A 全体から x を引いたあとその絶対値の総和を求めよ」という問題と同じです。

非負数と負数にわけて絶対値の総和を計算する

ソートすればある部分を境界として非負数と負数にわけることができます。境界を探すには二分探索法を使うのがよさそうです。あとは非負数部分の総和と負数部分の総和を計算してそれぞれの絶対値を足せばそれが解となります。区間[a, b]の総和を何度も計算するときは累積和を使うと便利です。

A 全体からある値 x を引いたあとの絶対値の総和を計算するときは A を x 未満と x 以上にわけてから、非負数部分の総和から x の個数倍を引いたものと負数部分の総和から x の個数倍を引いたものの総和を計算します。そのあとそれぞれの絶対値を足せば解を得ることができます。