← Home
write a go solution for Description:
You have a permutation p of integers from 1 to n.

You have a strength of s and will perform the following operation some times:

- Choose an index i such that 1<=i<=|p| and |i-p_i|<=s.
- For all j such that 1<=qj<=q|p| and p_i<p_j, update p_j to p_j-1.
- Delete the i-th element from p. Formally, update p to [p_1,ldots,p_i-1,p_i+1,ldots,p_n].

It can be shown that no matter what i you have chosen, p will be a permutation of integers from 1 to |p| after all operations.

You want to be able to transform p into the empty permutation. Find the minimum strength s that will allow you to do so.

Input Format:
The first line of input contains a single integer n (1<=n<=5*10^5)  — the length of the permutation p.

The second line of input conatains n integers p_1,p_2,ldots,p_n (1<=p_i<=n)  — the elements of the permutation p.

It is guaranteed that all elements in p are distinct.

Output Format:
Print the minimum strength s required.

Note:
In the first test case, the minimum s required is 1.

Here is how we can transform p into the empty permutation with s=1:

- In the first move, you can only choose i=2 as choosing any other value of i will result in |i-p_i|<=s being false. With i=2, p will be changed to [2,1].
- In the second move, you choose i=1, then p will be changed to [1].
- In the third move, you choose i=1, then p will be changed to [~].

It can be shown that with s=0, it is impossible to transform p into the empty permutation.. Output only the code with no comments, explanation, or additional text.