Do systému jsou během dne přidávány nové lety. Sekvence těchto požadavků je na vstupu, ve formátu:
čas_zadání_požadavku číslo_letu destinace čas_odletu
např.:
Kód: Vybrat vše
0:50 OK131 Helsinky 8:40
0:54 AF147 Moskva 7:30
1:30 BA121 Londyn 10:40
10:25 AF885 Pariz 16:30
Tabule se mění, když:
- je do systému zadán nový let (objeví se na tabuli)
- letadlo odletělo (zmizí z tabule)
- let mění stav:
2 hodiny před odletem přechází do stavu 'check-in'
30 minut před odletem přechází do stavu 'nástup'
10 minut před odletem přechází do stavu 'brána uzavřena'
Úkolem je vypsat tabuli ve všech časech nějaké změny (+čas této změny nad tabulí) vzestupně podle času během dne, tedy:
Výstup:
Kód: Vybrat vše
0:50
OK131 Helsinky 8:40
0:54
AF147 Moskva 7:30
OK131 Helsinky 8:40
1:30
AF147 Moskva 7:30
OK131 Helsinky 8:40
BA121 Londyn 10:40
5:30
AF147 Moskva 7:30 check-in
OK131 Helsinky 8:40
BA121 Londyn 10:40
...
Překvapilo mě pohodové takto pohodové zadání.
Dělal jsem to zhruba tak, že jsem si načetl všechny lety do vector<Flight>, při načítání převáděl čas (string) na počet minut od půlnoci (int) , setřídil podle času odletu.
Zároveň při načítání jsem do setu (set<int>) sypal časy změn, které každý let vygeneruje. Tím se tyto časy setřídily a zárověň odpady duplicity.
Pak stačilo set časů projít a v každém čase vypsat vektor letů, ale pouze ty letadla, které už byly zadány a ještě neodletěly a taky případně připsat stav.
Šlo by to možná i líp, ale co
Tak gl těm co tam ještě nebyli.