Олимпиадный тренинг

Задача . D. Сделайте равными


Задача

Темы: дп *3100

Даны \(n\) чисел \(a_1, a_2, \dots, a_n\). За одну операцию мы можем прибавить к любому из этих чисел неотрицательную целую степень \(2\).

Какое наименьшее число операций нужно сделать, чтобы сделать все \(n\) чисел равными? Можно доказать, что при данных ограничениях это число не превосходит \(10^{18}\).

Входные данные

Первая строка содержит одно целое число \(n\) (\(1 \le n \le 10^5\)).

Вторая строка содержит \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(0 \le a_i \le 10^{17}\)).

Выходные данные

Выведите ровно одно число — наименьшее число операций, которое нужно сделать, чтобы сделать все \(n\) чисел равными.

Примечание

В первом примере, все числа уже равны. Поэтому нужное число операций равно \(0\).

Во втором примере, мы можем применить операцию \(3\) раза: прибавить \(8\) к первой \(2\), прибавить \(8\) к второй \(2\), прибавить \(2\) к \(8\), сделав все числа равными \(10\). Можно доказать, что нельзя сделать все числа равными за менее чем \(3\) операции.


Примеры
Входные данныеВыходные данные
1 4
228 228 228 228
0
2 3
2 2 8
3

time 4000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя