Programozó versenyek

Magas szintű programozási nyelvek 1, egyéni verseny, 2015. április 12.

2015. április 12. 10:00 – 2015. április 12. 15:00

Formula 1

Eljött az ideje a következő Formula 1-es futamnak, és a vezetőség úgy döntött, hogy eljött az ideje egy új időmérő rendszernek is. Megvásárolták a startvonalhoz telepítendő ultramodern radar-lézer-mikrohullámú érzékelőket, de csak most vették észre, hogy a gyártó nem biztosított szoftvert az autók rajtsorrendjének megállapításához.

És itt jössz te a képbe. A vezetőség azt szeretné, ha írnál egy programot, amely megkapja az egyes versenyzők kvalifikációs köridejét, és kiírja a verseny rajtsorrendjét (azt a sorrendet, amelyben a pilóták megkezdik a versenyt). És mindezt gyorsan! Fogadok, hogy meg tudod csinálni egy boxkiállásnyi idő alatt!

(Ha esetleg nem tudnád, hogyan dől el a rajtsorrend a Formula 1-ben: minél kisebb egy pilóta körideje, annál jobb, azaz annál közelebbről indul a rajtrács elejéhez.)

A bemenet specifikációja

A bemenet számos tesztesetet tartalmaz. Az egyes tesztesetek leírása a következő:

A tesztesetek első sora egy N egész számból, a versenyben részt vevő pilóták számából áll (1 ≤ N ≤ 100). Ezt N sor követi, amelyek formátuma: “S : X min Y sec Z ms” (az idézőjelek csak az egyértelműség kedvéért szerepelnek). S egy legalább 1, legfeljebb 20 betűből álló sztring, amely a pilóta nevét reprezentálja. Az X (0 ≤ X ≤ 59), Y (0 ≤ Y ≤ 59) és Z (0 ≤ Z ≤ 999) egész számok rendre a pilóta kvalifikációs köridejének perc, másodperc és ezredmásodperc részét adják meg.

Minden teszteset után egy üres sor szerepel. A bemenetet az állományvégjel (EOF) zárja.

A kimenet specifikációja

A programodnak minden tesztesetre a kimenetre kell írnia a rajtrácsot, azaz a pilóták nevét a versenyen való indulásuk sorrendjében, mégpedig a következő formátumban: A rajtrács minden sorára (azaz minden egymás mellől induló autópárra) egy „Row R” sort kell kiírni, ahol R a sor száma, 1-ről indulva. Ezután két sor következik, amelyben az ebből a sorból induló pilóták neve szerepel (a bemeneten megadott módon) a helyezésük sorrendjében. Ha egy sorból csak egy pilóta rajtol, akkor csak egy sort kell kiírni a sor száma után. Ha egy tesztesetben két pilótának azonos a neve, ők akkor is különböző pilótáknak számítanak, így a kimeneten mindkettőjüket szerepeltetni kell. Ha két vagy több pilóta azonos időeredménnyel rendelkezik, akkor a nevük szerint kell rendezni őket (lexikografikus sorrendben, nem megkülönböztetve a kis- és nagybetűket). Végül minden teszteset után egy üres sort is ki kell írni.

Példa bemenet

  1. 3
  2. Schumacher : 1 min 23 sec 172 ms
  3. Barrichello : 2 min 12 sec 999 ms
  4. Senna : 0 min 55 sec 582 ms
  5. 4
  6. Schumacher : 1 min 23 sec 172 ms
  7. Barrichello : 2 min 12 sec 999 ms
  8. Senna : 0 min 55 sec 582 ms
  9. Fangio : 1 min 03 sec 000 ms
  10. 2
  11. BadPilot : 59 min 59 sec 999 ms
  12. ABadPilot : 59 min 59 sec 999 ms
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. Row 1
  2. Senna
  3. Schumacher
  4. Row 2
  5. Barrichello
  6. Row 1
  7. Senna
  8. Fangio
  9. Row 2
  10. Schumacher
  11. Barrichello
  12. Row 1
  13. ABadPilot
  14. BadPilot
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.