#CF1188D. 变为相等

变为相等

变为相等

  • 时间限制:5 秒
  • 内存限制:256 MiB

题目描述

给定 nn 个非负整数 a1,a2,…,ana_1,a_2,\ldots,a_n。一次操作可以选择其中一个数,并给它加上 22 的某个非负整数次幂。

求至少需要多少次操作,才能使所有数相等。

输入格式

第一行一个整数 nn。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

输出一行一个整数,表示最少操作次数。

样例输入 1

4
228 228 228 228

样例输出 1

0

样例输入 2

3
2 2 8

样例输出 2

3

样例解释

第二个样例中,可以分别给前两个数加 88,给最后一个数加 22,使它们都变成 1010。

数据范围

1≤n≤1051\le n\le10^5,0≤ai≤10170\le a_i\le10^{17}。答案不超过 101810^{18}。

子任务编号 分值 特殊限制
1 30 n≤200n\le200 且 max⁡ai−min⁡ai≤105\max a_i-\min a_i\le10^5
2 n=2n=2
3 40 无特殊限制