#bcu302019b. [bcu30_2019_b]Interval Addition

[bcu30_2019_b]Interval Addition

问题文

Mixi公司的员工青木先生拥有一个由 NN 个元素组成的数列 AA,一开始该数列的所有元素都是 00

青木先生希望通过执行以下操作 00 次或更多次,使得数列中的第 ii 个元素等于 aia_i,其中 1iN1 \leq i \leq N

  • 选择满足 1kN1 \leq k \leq N1lN+1k1 \leq l \leq N+1-k 的正整数 kkll。随意选择长度为 kk 的非负整数序列 (0)B1B2...Bk(0 \leq )B_1 \leq B_2 \leq ... \leq B_k,并将 Al+i1A_{l+i-1} 更新为 Al+i1+BiA_{l+i-1} + B_i,其中 1ik1 \leq i \leq k

每次操作可以使用不同的 k,l,Bk, l, B。请计算出青木先生需要进行的最少操作次数,以获得目标数列。

约束条件

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 0ai1090 \leq a_i \leq 10^9
  • 所有输入均为整数

输入

输入从标准输入读取。输入的格式如下所示。

NN a1a_1 a2a_2 ...... aNa_N

输出

输出青木先生需要进行的最少操作次数。


输入样例 1

2
3 4

输出样例 1

1

如果选择 k=2,l=1,B={3,4}k = 2, l = 1, B = \{3, 4\},则青木先生可以在一次操作中获得目标数列。


输入样例 2

2
4 3

输出样例 2

2

在第一次操作中,选择 k=2,l=1,B={3,3}k = 2, l = 1, B = \{3, 3\},则 AA 变为 {3,3}\{3, 3\}

在第二次操作中,选择 k=1,l=1,B={1}k = 1, l = 1, B = \{1\},则 AA 变为 {4,3}\{4, 3\}

因此,青木先生可以在两次操作中获得目标数列,并且无法在一次操作中获得目标数列,所以输出为 22


输入样例 3

4
4 0 4 0

输出样例 3

2