各数字を1に書き換えるコストが最小になるようにし、その合計を出せば良い。「1に書き換える最小コスト」=「1への最短距離」と考えることが出来るので、事前にワーシャルフロイド法などで最短距離を求めておけば、あとは各Aijについて加算していけばよい。演算子の場所は3カ所で+-の2通りしかない。全パターン試す実装はビット演算で実施。競技プログラミングABCやARCと違うコンテストに参加するのは今回が初でした。KLabさん主催とのことですが、ほぼいつもの問題の感じと同じでしたね。今度こそは水色に、と意気込んだのですが、Cの考察不足で最後までWAが残ってしまいまたもや撃沈でした。整数の数Nはなので、全て列挙する方法だとぜんぜん間に合いません。よってどういう並びが適切かを考えることになります。1、3、5という3つの整数を並べる場合を考えます。なるため、真ん中に3を入れる意味が無くなります。これは降順についても同じです。よって、並べ方のうち3つ以上が昇順(または降順)で現れるものは最適ではありません。ような凸凹の並びになります。この際、整数の数が偶数か奇数かで分けて考える必要があります。そこで実際にNが偶数の場合として6を考えてみます。それぞれの計算結果はとなりますが、両者は並び順が異なるだけなので同じとみなせます。前者を最大にすることを考えた場合、2倍で加算されるやにはなるべく大きい値、2倍で減算されるやにはなるべく小さい値を当てはめるべきです。よって、事前に与えられた整数をソートしておき、大きい方の半分は2倍して加算、小さい方の半分は2倍して減算していけばよいことがわかります。中央値の2つの数については1倍のままにする必要があります。次にNが奇数の場合として5を考えてみます。