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 |