Minimum Cost for Equal

2 secs 1024 MB
sepa38's icon sepa38

コストを最小化するために、なるべく操作 11 を行うことを考えます。

A,B,CA, B, C を並べ替えても一般性を失わないため、以下では昇順に並べられているとします。

CKC \leq K より、A,BA, B に対して操作 11CBC - B 回行うことは可能です。\\ これにより、\\ A,B,CA, B, C\\ A+(CB),C,CA+(C-B), C, C となります。

式を見やすくするため、ここで A+(CB)=XA + (C - B) = X とします。

次に、XX とその他の値を揃えるために、以下の操作を行います。

  • XX と一方の CC に対して操作 11 を行う
  • その後、X+1X+1 ともう一方の CC に対して操作 11 を行う

この操作を 11 回行うごとに、XX であったものには 22 だけ加算され、CC であったものにはそれぞれ 11 ずつ加算されます。 つまり、11 回ごとに 11 ずつ XX と他の値との差が小さくなっていくため、この操作を CXC - X 回行うことにより、全ての値を等しくすることができます。 しかし、CC であったものが KK を超えることができないため、この操作を行う回数の上限は KCK - C 回です。

よって、CXKCC - X \leq K - C のときは操作 22 を行わずにすべての値を等しくすることができますが、 KC<CXK - C < C - X のとき、(CX)(KC)(C - X) - (K - C) 回、すなわち、CA+BKC-A+B-K 回だけ操作 22 を行う必要があります。

これをまとめると、必要なコストは max(0,CA+BK)max(0, C-A+B-K) となります。