Less options
题号:NC216004
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定b数组b1,b2,...,bn, ,a是大小相同初始值全为0的数组。

每次操作,你可以任意选择两种操作中的一种:
opt 1 : 选择a数组中的某一个元素加一。
opt 2 :a数组的每个元素都乘以2.
请你返回将 a 数组变成 b数组 的最少操作次数。

输入描述:

一行,一个整数n.
第二行,依次输入b1,b2,...,bn

输出描述:

一行,一个整数表示答案。
示例1

输入

复制
2
1 5

输出

复制
5

说明

给第二个数加 1 :[0, 0] 变成 [0, 1] (1 次操作)。
将所有数字乘以 2 :[0, 1] -> [0, 2] -> [0, 4] (2 次操作)。
给两个数字都加 1 :[0, 4] -> [1, 4] ->[1, 5](2 次操作)。
总操作次数为:1 + 2 + 2 = 5 。

备注:

1 <= n <= 10^5
0 <= b[i]<= 10^9