Otimização de rota usando estruturas e fila de prioridade

Swift Hard structs

Tarefa «Otimização de rota usando estruturas e fila de prioridade»

Desenvolva uma estrutura `Route` representando uma rota com os campos: `startCity` (String), `endCity` (String), `distance` (Int) e `priority` (Int). Implemente a função `optimizeRoutes`, que recebe um array de rotas e retorna um array de rotas ordenado em ordem crescente de distância e, em caso de distância igual, em ordem decrescente de prioridade. Em seguida, para cada rota, exiba sua descrição no formato: "{startCity} -> {endCity}: {distance} km (priority {priority})". Se o array estiver vazio, exiba "No routes". Utilize apenas estruturas e algoritmos de ordenação embutidos, sem classes.

Formato de Entrada

A primeira linha contém um número inteiro N (1 ≤ N ≤ 100) — a quantidade de rotas. Em seguida, vêm N linhas, cada uma contendo quatro valores separados por espaço: startCity (string sem espaços, até 20 caracteres), endCity (string sem espaços, até 20 caracteres), distance (número inteiro de 1 a 10000), priority (número inteiro de 1 a 100).

Formato de Saída

Exiba N linhas, cada uma no formato "{startCity} -> {endCity}: {distance} km (priority {priority})", ordenadas conforme a regra. Se N=0, exiba "No routes".

Exemplos

Exemplo 1

ENTRADA
3 X Y 1000 10 Y Z 500 10 Z X 750 10
SAÍDA
Y -> Z: 500 km (priority 10) Z -> X: 750 km (priority 10) X -> Y: 1000 km (priority 10)

Exemplo 2

ENTRADA
1 Start End 1 100
SAÍDA
Start -> End: 1 km (priority 100)
main.swift