Task
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

𝐴𝑟𝑖𝑎接到了一份来自校方的委托,虽然没有学分但也必须完成。
需要粉刷𝑛条木板,这些木板按照左端对齐,每条木板的高度都是1,
第𝑖条木板的长度为𝐴𝑖
𝐴𝑟𝑖𝑎只有一个宽度为1的刷子,她每次可以水平或者竖直地对连续的
位置进行粉刷,刷子不能经过没有木板的位置。
𝐴𝑟𝑖𝑎对校方的这个安排非常不满,但为了效率,她允许重复粉刷一个
位置,希望通过最少的次数来完成这𝑛条木板的粉刷。

输入描述:

第一行,一个正整数𝑛。
第二行,𝑛个正整数𝐴𝑖

输出描述:

一行,一个整数,需要进行的最小粉刷次数。
示例1

输入

复制
5
2 2 1 2 1

输出

复制
3

备注:

对于20%的数据,𝑛,𝐴𝑖 ≤ 5。
对于50%的数据,𝑛,𝐴𝑖 ≤ 200。
对于70%的数据,𝐴𝑖 ≤ 3000。
对于100%的数据,𝑛 ≤ 3000,𝐴𝑖 ≤ 109