P5846 [IOI 2005] bir

题目描述

今天是 Byteman 的生日。有 $n$ 个孩子参加他的生日宴会(包括 Byteman )。孩子们从 $1$ 到 $n$ 编号。Byteman 的父母准备了一张大圆桌并放了n把椅子在圆桌周围。孩子们来了就坐下。$1$ 号孩子坐其中一个,然后 $2$ 号孩子坐在他左边,然后 $3$ 号孩子坐在 $2$ 号左边,以此类推。最后 $n$ 号孩子坐在最后一个空椅子上,也就是 $n-1$ 号孩子和 $1$ 号孩子之间。 Byteman 的父母非常了解这些孩子,知道如果有些孩子坐在一起就会非常吵。因此他们将按特定顺序调整这些孩子的座位。用一个置换 $p_1,p_2,\cdots,p_n$ ($p_1,p_2,\cdots,p_n$是 $1$ 到 $n$ 的整数)来表示这个顺序。孩子 $p_1$ 将坐在 $p_2$ 和 $p_n$ 之间,孩子 $p_i$ ($ i = 2,3,…n-1$)将坐在孩子 $p_{i-1}$ 和 $p_{i+1}$ 之间,孩子 $p_n$ 将坐在孩子 $p_{n-1}$ 和 $p_1$ 之间。需要注意的是 $p_1$ 可以坐在 $p_n$ 左边也可以坐在 $p_n$ 右边。 让所有孩子按给定顺序做好,Byteman 父母必须让每个孩子绕圆桌向左或向右移动一些座位。他们必须决定每个孩子如何移动,也就是说它们必须决定一个方向,以及距离。对于给定的移动信号,所有孩子立刻站起来,移到合适的位置坐下。 串座过程使研会变得乱七八糟,乱七八糟值等于所有孩子中最大移动距离,孩子们可以以很多种方式移动,Byteman 父母将选择乱七八糟值最小的。帮他们找到这一种方案。 你的任务是写一个程序: 从标准输入读入孩子的数目和描述目标序列的那个置换。 算出最小的乱七八糟值。

输入格式

第一行包括一个整数 $n$ ($1 \le n \le 10^6$)。 第二行包括 $n$ 个整数 $p_1,p_2,\cdots,p_n$,以一个空格分开。$p_1,p_2,\cdots,p_n$ 是集合 $\{1,2,\cdots,n\}$ 的一个置换,描述目标顺序。

输出格式

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

说明/提示

对于 $50\%$ 的数据,$1 \le n \le 1000$; 对于 $100\%$ 的数据,$1 \le n \le 10^6$。