#328. 汉诺塔问题 5

汉诺塔问题 5

题目描述

这是一个新型汉诺塔游戏。

有两个柱子,一个叫 A 柱,另一个叫 B 柱。柱子之间有一个桌子。

初始时,将编号为 1 ~ n 的 n 个中间有孔的圆盘打乱顺序后,套放在 A 柱上。

现在要将 A 柱最上面的 x 个圆盘全部套放到 B 柱上,要求使得圆盘编号自上而下按编号从大到小排列。

你可以借助中间的桌子完成游戏。

只有两种操作供选择:

  • 如果 A 柱上还有圆盘,将 A 柱最上面的一个圆盘放在桌子上。并且,你要么将圆盘放在桌子上已有的某个圆盘堆的最上面,要么放在最右边自成一堆。

  • 如果桌子上有圆盘,将最靠左的那堆的最上面的一个圆盘套放到 B 柱上。

你的目标是:最大化 x 的值。

输入格式

第一行:一个整数 n

接下来 n 行,每行一个整数,依次表示 A 柱初始圆盘自上而下的编号。保证这 n 个数是 1 ~ n 的一个排列。

输出格式

一个整数,表示答案。

样例输入

5
5
2
3
1
4

样例输出

3

样例解释

A 柱的前 3 个圆盘最终可以使其在 B 柱自上而下圆盘编号依次为 5、3、2。

数据范围

100% 的数据:1 ≤ n ≤ 10^5