#P5846. [IOI2005] bir

[IOI2005] bir

题目描述

今天是 Byteman 的生日。有 nn 个孩子参加他的生日宴会(包括 Byteman )。孩子们从 11nn 编号。Byteman 的父母准备了一张大圆桌并放了n把椅子在圆桌周围。孩子们来了就坐下。11 号孩子坐其中一个,然后 22 号孩子坐在他左边,然后 33 号孩子坐在 22 号左边,以此类推。最后 nn 号孩子坐在最后一个空椅子上,也就是 n1n-1 号孩子和 11 号孩子之间。

Byteman 的父母非常了解这些孩子,知道如果有些孩子坐在一起就会非常吵。因此他们将按特定顺序调整这些孩子的座位。用一个置换 p1,p2,,pnp_1,p_2,\cdots,p_n (p1,p2,,pnp_1,p_2,\cdots,p_n11nn 的整数)来表示这个顺序。孩子 p1p_1 将坐在 p2p_2pnp_n 之间,孩子 pip_i (i=2,3,n1 i = 2,3,…n-1)将坐在孩子 pi1p_i-1pi+1p_i+1 之间,孩子 pnp_n 将坐在孩子 pn1p_n-1p1p_1 之间。需要注意的是 p1p_1 可以坐在 pnp_n 左边也可以坐在 pnp_n 右边。

让所有孩子按给定顺序做好,Byteman 父母必须让每个孩子绕圆桌向左或向右移动一些座位。他们必须决定每个孩子如何移动,也就是说它们必须决定一个方向,以及距离。对于给定的移动信号,所有孩子立刻站起来,移到合适的位置坐下。 串座过程使研会变得乱七八糟,乱七八糟值等于所有孩子中最大移动距离,孩子们可以以很多种方式移动,Byteman 父母将选择乱七八糟值最小的。帮他们找到这一种方案。

你的任务是写一个程序: 从标准输入读入孩子的数目和描述目标序列的那个置换。 算出最小的乱七八糟值。

输入格式

第一行包括一个整数 nn (1n1061 \le n \le 10^6)。

第二行包括 nn 个整数 p1,p2,,pnp_1,p_2,\cdots,p_n,以一个空格分开。p1,p2,,pnp_1,p_2,\cdots,p_n 是集合 {1,2,,n}\{1,2,\cdots,n\} 的一个置换,描述目标顺序。

输出格式

一行包含一个整数:最小的乱七八糟值。

6
3 4 5 1 2 6
2

提示

对于 50%50\% 的数据,1n10001 \le n \le 1000

对于 100%100\% 的数据,1n1061 \le n \le 10^6