Контест Middle Современный C++20/23 обновлено

Сортировка версий с оператором <=>

Условие

Дан список версий вида 1.2.10: от одного до шести неотрицательных целых через точку. Версии сравниваются покомпонентно как числа (1.10 > 1.9), а недостающие компоненты считаются нулями, поэтому 1.2, 1.2.0 и 1.2.0.0 равны.

Отсортируйте версии по возрастанию и уберите равные, оставляя из каждой группы равных ту, что встретилась во входе раньше всех. Выведите количество различных версий и сами версии в исходной записи.

Реализуйте тип Version с auto operator<=>(const Version&) const (можно = default поверх нормализованного вектора компонент).

Ввод: n (1 ≤ n ≤ 3000), затем n версий. Компоненты от 0 до 10⁹, без ведущих нулей.

Вывод: число различных версий и по версии в строке.

Пример 1

Ввод:

5
1.10
1.9
1.2
1.2.0
0.9.9

Вывод:

4
0.9.9
1.2
1.9
1.10

Пример 2

Ввод:

3
0
0.0
0.0.0

Вывод:

1
0

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.