#P13844. [codefestival2017_quala]Squeezing Slimes

[codefestival2017_quala]Squeezing Slimes

题目描述

AA 只史莱姆横向排成一行。最初,所有史莱姆的大小都是 11

すぬけ君可以重复进行以下操作:

  • 选择一个正的偶数 MM。选择连续的 MM 只史莱姆,将它们分别按照从左到右的第 (1,2)(1, 2)(3,4)(3, 4)……、(M1,M)(M - 1, M) 只史莱姆组成一组,两两配对。然后,每组中的 22 只史莱姆合成为 11 只史莱姆,合成后的史莱姆大小等于合成前两只史莱姆大小之和。合成后得到 M/2M/2 只史莱姆,并保持合成前各组的顺序不变。

すぬけ君的目标是让史莱姆恰好剩下 NN 只,并且第 ii 只史莱姆的大小恰好为 aia_i1iN1 \leq i \leq N)。请你求出すぬけ君达成目标所需的最小操作次数。

注意,AA 不作为输入给出,而是 A=a1+a2++aNA = a_1 + a_2 + \cdots + a_N

输入格式

输入按如下格式从标准输入读入:

NN a1a_1 a2a_2 \cdots aNa_N

输出格式

请输出すぬけ君达成目标所需的最小操作次数。

输入输出样例 #1

输入 #1

2
3 3

输出 #1

2

输入输出样例 #2

输入 #2

4
2 1 2 2

输出 #2

2

输入输出样例 #3

输入 #3

1
1

输出 #3

0

输入输出样例 #4

输入 #4

10
3 1 4 1 5 9 2 6 5 3

输出 #4

10

说明/提示

限制条件

  • 1N1051 \leq N \leq 10^5
  • aia_i 是整数。
  • 1ai1091 \leq a_i \leq 10^9

样例解释 1

可以按如下方式进行操作。操作对象的史莱姆用粗体表示。

  • (1, 1, 1, 1, 1, 1) → (1, 2, 2, 1)
  • (1, 2, 2, 1) → (3, 3)

样例解释 2

可以按如下方式进行操作:

  • (1, 1, 1, 1, 1, 1, 1) → (2, 1, 1, 1, 1, 1)
  • (2, 1, 1, 1, 1, 1) → (2, 1, 2, 2)