Entwickeln Sie eine Struktur `Route`, die eine Route mit den Feldern `startCity` (String), `endCity` (String), `distance` (Int) und `priority` (Int) darstellt. Implementieren Sie die Funktion `optimizeRoutes`, die ein Array von Routen entgegennimmt und ein nach aufsteigender Entfernung sortiertes Array von Routen zurückgibt, bei gleicher Entfernung absteigend nach Priorität. Geben Sie anschließend für jede Route deren Beschreibung im Format "{startCity} -> {endCity}: {distance} km (priority {priority})" aus. Wenn das Array leer ist, geben Sie "No routes" aus. Verwenden Sie nur Strukturen und eingebaute Sortieralgorithmen, keine Klassen.
Eingabeformat
Die erste Zeile enthält eine ganze Zahl N (1 ≤ N ≤ 100) — die Anzahl der Routen. Danach folgen N Zeilen, jede enthält vier durch Leerzeichen getrennte Werte: startCity (Zeichenkette ohne Leerzeichen, bis zu 20 Zeichen), endCity (Zeichenkette ohne Leerzeichen, bis zu 20 Zeichen), distance (ganze Zahl von 1 bis 10000), priority (ganze Zahl von 1 bis 100).
Ausgabeformat
Geben Sie N Zeilen aus, jede im Format "{startCity} -> {endCity}: {distance} km (priority {priority})", sortiert nach der Regel. Wenn N=0 ist, geben Sie "No routes" aus.
Beispiele
Beispiel 1
EINGABE
3
X Y 1000 10
Y Z 500 10
Z X 750 10
AUSGABE
Y -> Z: 500 km (priority 10)
Z -> X: 750 km (priority 10)
X -> Y: 1000 km (priority 10)
Beispiel 2
EINGABE
1
Start End 1 100
AUSGABE
Start -> End: 1 km (priority 100)