CF573B Bear and Blocks

题目描述

Limak 是一只爱玩耍的小熊。今天他正在玩摧毁积木塔的游戏。他在一排中搭建了 $n$ 个积木塔,第 $i$ 个塔由 $h_{i}$ 个完全相同的积木块组成。如要了解详情,请参见第一个样例的图片。 Limak 会重复以下操作,直到所有积木塔都被摧毁。 一个积木块如果上下左右四个方向都有相邻的积木块或者地面,则称为“内部积木块”;否则就是“边界积木块”。在一次操作中,Limak 会同时摧毁所有的边界积木块。他的动作非常快,可以在同一时间内摧毁所有这些积木块。 Limak 已经准备好了开始。你的任务是计算他需要多少次操作才能摧毁所有的积木塔。

输入格式

第一行包含一个整数 $n$($1\le n\le 10^{5}$)。 第二行包含 $n$ 个用空格分隔的整数 $h_1, h_2, ..., h_n$($1\le h_i\le 10^{9}$),表示每个积木塔的高度。

输出格式

输出摧毁所有积木塔所需要的操作次数。

说明/提示

下图展示了第一个样例测试的三次操作过程。每次操作中用红色标记了边界积木块。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF573B/256df13c1ef1192f2e98a72ff5ba9bb98f4ceade.png) 第一次操作后还剩下四个积木块,第二次操作后只剩下一个积木块,最后一次操作摧毁了这最后一个积木块。 由 ChatGPT 5 翻译