Hide

Problem G
Studentredovisningar

En programmeringskurs går löpande under hela året, med uppgifter som studenterna får lösa när de vill. När de är klara med uppgifterna bokar de en tid för redovisning. Redovisningar hålls den 1:a och den 15:e varje månad, oavsett vilken veckodag det skulle råka vara. På varje redovisningspass får högst 5 studenter redovisa, de som inte hinner är hänvisade till nästkommande tillfälle. Ordningen av vilka studenter som får redovisa avgörs i första hand av när de blev färdiga - klar först redovisar först - och i andra hand av alfabetisk ordning på efternamnet. Skulle två eller flera studenter som redovisat på samma datum dessutom ha samma efternamn, så gör man ett undantag och förlänger tillfället så att ingen blir orättvist försenad, men listar dem alfabetiskt efter första förnamnet (i andra hand efter andra förnamnet, o.s.v). Om två studenter har samma för- och efternamn, men den ena dessutom har ett namn fler än den andra, så sorteras den med flest namn sist.

Man får tidigast redovisa dagen efter att man blivit klar med uppgifterna. Om en student har fler än två namn registrerade så antas bara det sista vara ett efternamn.

Din uppgift är att skriva ett program som kan läsa in en lista med klardatum och studentnamn, och avgöra när de får redovisa.

Indata

En radbruten lista där varje rad motsvarar en student och det datum de blev klara med uppgifterna. Varje rad står på följande format: <Namn1> [<Namn2> <Namn3> ...] <NamnN> <ÅÅÅÅMMDD> Namn1, och de eventuellt förekommande Namn2, Namn2, etc, är studentens förnamn, NamnN är hens efternamn, och ÅÅÅÅMMDD är ett tal med 8 siffror som anger det datum som studenten blev färdig med uppgifterna. Studenternas namn kan innehålla alla bokstäver A–Ö, bindestreck och apostrofer. Datumet kan vara vilket datum som helst mellan 19000101 och 20251231.

Utdata

En radbruten, sorterad lista på följande format: Först kommer ett redovisningsdatum på formatet ÅÅÅÅMMDD, sedan följer namnen på alla studenter som redovisar då, sedan kommer nästa redovisningsdatum, följt av namnen på de studenter som redovisar då. Studenterna ska listas i korrekt ordning enligt ovan. Endast de datum då minst en student redovisa skall skrivas ut.

Sample Input 1 Sample Output 1
Joyce Carol Oates 19980414
Per Albin Hansson 19980223
William Henry Gates 19980222
Joyce Oates 19980414
19980301
William Henry Gates 
Per Albin Hansson 
19980415
Joyce Oates 
Joyce Carol Oates 
Sample Input 2 Sample Output 2
Andrea Ghez 20251201
Donna Strickland 20251201
Maria Goeppert Mayer 20251202
Marie Sklodowska Curie 20251202
Carolyn Bertozzi 20251202
Emmanuelle Charpentier 20251201
Irene Joliot Curie 20251202
Tu Youyou 20251202
20251215
Emmanuelle Charpentier 
Andrea Ghez 
Donna Strickland 
Carolyn Bertozzi 
Irene Joliot Curie 
Marie Sklodowska Curie 
20260101
Maria Goeppert Mayer 
Tu Youyou 

Please log in to submit a solution to this problem

Log in