atcoder#ABC268E. [ABC268E] Chinese Restaurant (Three-Star Version)

[ABC268E] Chinese Restaurant (Three-Star Version)

配点 : 500500

問題文

回転テーブルの周りに人 00、人 11\ldots、人 N1N-1 がこの順番で反時計回りに等間隔で並んでいます。また、人 ii の目の前には料理 pip_i が置かれています。 あなたは次の操作を 00 回以上何度でも行うことが出来ます。

  • 回転テーブルを反時計回りに 11 周の 1N\frac{1}{N} だけ回す。これによって、(この操作の直前に)人 ii の目の前にあった料理は人 (i+1)modN(i+1) \bmod N の目の前に移動する。

操作を完了させた後において、人 ii の不満度は料理 ii が人 (ik)modN(i-k) \bmod N、人 (i+k)modN(i+k) \bmod N のいずれかの目の前に置かれているような最小の非負整数 kk です。 NN 人の不満度の総和の最小値を求めてください。

$a \bmod m$ とは 整数 a と正整数 m に対し、a \bmod ma-xm の倍数となるような 0 以上 m 未満の整数 x を表します。(このような x は一意に定まることが証明できます)

制約

  • 3N2×1053 \leq N \leq 2 \times 10^5
  • 0piN10 \leq p_i \leq N-1
  • iji \neq j ならば pipjp_i \neq p_j
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN

p0p_0 \ldots pN1p_{N-1}

出力

答えを出力せよ。

4
1 2 0 3
2

操作を 11 回行うと下の画像のようになります。

この時、不満度の総和が 22 になることを以下のように確かめられます。

  • 00 の不満度は、料理 00 が人 3 (=(01)mod4)3\ (=(0-1) \bmod 4) の目の前に置かれているので 11 です。
  • 11 の不満度は、料理 11 が人 1 (=(1+0)mod4)1\ (=(1+0) \bmod 4) の目の前に置かれているので 00 です。
  • 22 の不満度は、料理 22 が人 2 (=(2+0)mod4)2\ (=(2+0) \bmod 4) の目の前に置かれているので 00 です。
  • 33 の不満度は、料理 33 が人 0 (=(3+1)mod4)0\ (=(3+1) \bmod 4) の目の前に置かれているので 11 です。

不満度の総和を 22 より小さくすることは出来ないため、答えは 22 です。

3
0 1 2
0
10
3 9 6 1 7 2 8 0 5 4
20