atcoder#ABC268C. [ABC268C] Chinese Restaurant

[ABC268C] Chinese Restaurant

配点 : 300300

問題文

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

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

操作を完了させた後において、人 ii は料理 ii が人 (i1)modN(i-1) \bmod N、人 ii、人 (i+1)modN(i+1) \bmod N のいずれかの目の前に置かれていると喜びます。 喜ぶ人数の最大値を求めてください。

$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
4

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

この時、44 人が喜ぶことを以下のように確かめられます。

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

55 人以上が喜ぶことは無いため、答えは 44 です。

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