Оптимизация маршрута с помощью структур и очереди приоритетов

Swift Сложный structs

Задача «Оптимизация маршрута с помощью структур и очереди приоритетов»

Разработайте структуру `Route`, представляющую маршрут с полями: `startCity` (String), `endCity` (String), `distance` (Int) и `priority` (Int). Реализуйте функцию `optimizeRoutes`, которая принимает массив маршрутов и возвращает отсортированный массив маршрутов по возрастанию расстояния, а при равном расстоянии — по убыванию приоритета. Затем для каждого маршрута выведите его описание в формате: "{startCity} -> {endCity}: {distance} km (priority {priority})". Если массив пустой, выведите "No routes". Используйте только структуры и встроенные алгоритмы сортировки, без классов.

Формат ввода

Первая строка содержит целое число N (1 ≤ N ≤ 100) — количество маршрутов. Затем следуют N строк, каждая содержит четыре значения, разделённые пробелом: startCity (строка без пробелов, до 20 символов), endCity (строка без пробелов, до 20 символов), distance (целое число от 1 до 10000), priority (целое число от 1 до 100).

Формат вывода

Выведите N строк, каждая в формате "{startCity} -> {endCity}: {distance} km (priority {priority})", отсортированных по правилу. Если N=0, выведите "No routes".

Примеры

Пример 1

ВВОД
3 X Y 1000 10 Y Z 500 10 Z X 750 10
ВЫВОД
Y -> Z: 500 km (priority 10) Z -> X: 750 km (priority 10) X -> Y: 1000 km (priority 10)

Пример 2

ВВОД
1 Start End 1 100
ВЫВОД
Start -> End: 1 km (priority 100)
main.swift